?

Log in

No account? Create an account

Tue, Oct. 5th, 2010, 05:40 pm
Плейлист из командной строки. Упражняемся с xargs.

Идея такая: 1)беру список файлов в папке с музыкой,

2)сортирую их случайно (потому что там больше файлов, чем влезет на флешку).

3) копирую сколько влезет со случайными именами на флешку в корень

Собственно, случайные имена нужны потому, что мой китайский проигрыватель может шуфлить в пределах папки, а по всему листу нет. А хочется что бы случайно. А в одну папку с теми же именами нельзя, потому что во многих папках файлы типа track01.mp3.

rm /media/CARAUDIO/*.mp3; find «/home/beliashou/Музыка/music/Барды/» -print | sort -R | grep «[^\'].*\.mp3″ | xargs -i echo cp «\»{}\» \$(tempfile –dir=/media/CARAUDIO -s .mp3)» >list.sh ; chmod +x list.sh; ./list.sh ; rm list.sh

Собственно, у меня не получилось сделать xargs cp «{}» $(tempfile), потому что она вычисляет один раз имя временного файла и всё копирует в один файл. А xargs echo {} «\$(tempfile) | xargs cp {} не заработало вообще не понятно почему. Я там и с ковычками, и со скобками… Короче, не запустил.

(c)

Tue, Oct. 5th, 2010 03:10 pm (UTC)
tzirechnoy

1) А зачем Вам рандомное имя? Не проще ли номера использовать? Ну, в стиле num=$((`cat /tmp/num` + 1)); echo $num >/tmp/num; ...
2) Если shell слишком рано экспандит имена в команде -- надо обернуть команду в /bin/sh -c '... "$0" ... ' {}
Кстати, можно без -i и {} в концэ, это дажэ в общем логичней.
3) Кстати, особенно в случае музыки -- лучшэ использовать find -print0, sort -z и xargs -0.
4) А ещё я не разобрался в схеме Вашэго квотинга. Кстати, в итоге в list.sh находится $(tempfile --dir ...) или ужэ результат?

В общем,
echo 0>/tmp/num; find -L "/home/Музыка/" -print0 |sort -R -z|grep -z "..." |xargs -0 -l /bin/sh -c 'num=$((`cat /tmp/num` + 1)); echo $num >/tmp/num; cp "$0" /media/CARAUDIO/$num.mp3'


Кстати да, -l у xargs.

Mon, Oct. 18th, 2010 09:43 am (UTC)
beliashou

Что-то в таком варианте вообще не смог запустить

Mon, Oct. 18th, 2010 10:45 am (UTC)
tzirechnoy

(Сочувственно) Папочки /media/CARAUDIO не нашлось?

Mon, Oct. 18th, 2010 11:07 am (UTC)
linux007: Re: Reply to a comment...

Да нет. Там просто очень много ошибок каких-то. Думаю, что я так и не разобрался с этими параметрами типа -print0. Сейчас я сделал новую версию - совсем тупую и простую как грабли, но вроде как накидало мне файлов на карточку.

Tue, Oct. 5th, 2010 06:25 pm (UTC)
frau_katyuskhen

(записывает в блокнотик новое слово) *шуфлить*

У меня любопытство. В папке "/home/beliashou/Музыка/" какие ещё есть папки, кроме "music"?
Разве "music" - это подмножество "Музыка"?

Wed, Oct. 6th, 2010 06:36 am (UTC)
linux007: Re: Reply to your entry...

Ты не поверишь, но music это ссылка на другой диск, где живёт вся музыка :-) Просто логичнее что бы эта ссылка была там же, где и привычный для операционной системы накопитель музыки :-)

А другие папки есть в каталоге music - рядом с Бардами :-)