2014-05-17 1 views
0

Я пытаюсь создать плейлист, который является той же идеей, что и плейлист «Недавно добавленные альбомы», который вы обычно видите в iTunes, но используя параметр $ NUM_OF_DAYS_BEFORE.Создайте «Недавно добавленные альбомы» плейлист m3u

Я использовал большинство идей с этого поста: How to recursively find and list the latest modified files in a directory with subdirectories and times?

Я создал сценарий, который я могу работать со следующим Params:

create_m3u /dir_root/with/mp3s 60 

где $ 1 является каталогом, который является корневым из моих mp3s (у которых есть папки в нем, у которых также есть mp3) , где $ 2 - количество дней назад с сегодняшнего дня, что я хотел бы создать файл плейлиста m3u.

Основная часть сценария эта команда:

find $1 -type f -iregex '.*\.mp3' -mtime -$2 -exec stat --format '%Y %y %n' {} \; | \ 
sort -n | \ 
cut -d' ' -f5- | \ 
sed -e 's/^/\./' 

Теперь моя проблема, вышеприведенная команда до и включая

cut d' ' -f5- 

часть дает мне этот тип выхода:

.... 
./RATKING - So It Goes - 2014 [V0]/09. Protein.mp3 
./RATKING - So It Goes - 2014 [V0]/08. Puerto Rican Judo.mp3 
./RATKING - So It Goes - 2014 [V0]/02. Canal.mp3 
./RATKING - So It Goes - 2014 [V0]/05. Remove Ya.mp3 
./RATKING - So It Goes - 2014 [V0]/04. So Sick Stories.mp3 
./RATKING - So It Goes - 2014 [V0]/06. Eat.mp3 
./RATKING - So It Goes - 2014 [V0]/03. Snow Beach.mp3 
./RATKING - So It Goes - 2014 [V0]/07. So It Goes.mp3 
./RATKING - So It Goes - 2014 [V0]/01. _.mp3 
./RATKING - So It Goes - 2014 [V0]/10. Bug Fights.mp3 
./RATKING - So It Goes - 2014 [V0]/11. Take.mp3 
./Aesop Rock - The Blob (2014) [MP3 320]/01 The Blob.mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/06 - Requiem.mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/08 - Riot In My Brain!!.mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/10 - Can't Let It Go.mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/03 - Battling Voices From Beyond.mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/02 - Meepy Morp.mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/07 - Meepy Morp (Reprise).mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/09 - 7 SKIES H3 (Main Theme).mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/05 - Metamorphosis.mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/04 - In A Dream.mp3 
./The Flaming Lips - 7 Skies H3 (2014) [V0]/01 - 7 SKIES H3 (Can't Shut Off My Head).mp3 
./G. Love & Special Sauce - 2014 - Sugar/14 - Bad Girl Baby Blues.mp3 
./G. Love & Special Sauce - 2014 - Sugar/06 - Sugar.mp3 
./G. Love & Special Sauce - 2014 - Sugar/10 - Windshield Wipers.mp3 
./G. Love & Special Sauce - 2014 - Sugar/02 - Nite Life.mp3 
./G. Love & Special Sauce - 2014 - Sugar/09 - One Night Romance.mp3 
./G. Love & Special Sauce - 2014 - Sugar/03 - Good Life.mp3 
./G. Love & Special Sauce - 2014 - Sugar/04 - Nothing Else Quite Like Home.mp3 
./G. Love & Special Sauce - 2014 - Sugar/05 - Smokin Blues.mp3 
./G. Love & Special Sauce - 2014 - Sugar/08 - Saturday Night.mp3 
./G. Love & Special Sauce - 2014 - Sugar/13 - Run For Me.mp3 
./G. Love & Special Sauce - 2014 - Sugar/07 - Weekend Dance #2.mp3 
./G. Love & Special Sauce - 2014 - Sugar/12 - Too Much Month.mp3 
./G. Love & Special Sauce - 2014 - Sugar/01 - Come Up Man.mp3 
./G. Love & Special Sauce - 2014 - Sugar/11 - Cheating Heart.mp3 

, который я так хочу (частично) - отсортировано по дате, когда альбом был добавлен в f ilesystem/PC. Но я хочу, чтобы каждый альбом отсортировался по номеру песни 01, 02, 03, 04 ... из каждой папки/альбома, а не по неупорядоченным номерам, как показано выше.

Есть ли у кого-нибудь советы о том, как я могу сделать это по-другому, чтобы получить желаемый результат?

ответ

0

У вашей исходной команды есть некоторые избыточности - связанный с вами вопрос требует даты на выходе, тогда как вы этого не делаете, поэтому вы можете пропустить некоторые из полей, выводимых stat. Вы также можете пропустить stat, используя find -printf. Это должно работать (частично непроверенных, извините):

find $1 -type f -iregex '.*\.mp3' -mtime -$2 --printf "%[email protected]~.%h~%f\n" |\ 
sort -t~ -nk1 -nk3 |\ 
cut -d~ -f2- |\ 
tr '~' '/' 

find находит одни и те же файлы, а затем выводит в следующем формате:

[modified date in seconds since Unix epoch]~.[file directory]~[filename] 
ex: 
1234512345~./RATKING - So It Goes - 2014 [V0]~09. Protein.mp3 

Мы тогда-то во-первых, по дате, а во-вторых, имя файла (как численно, так и ~ в качестве разделителя полей). Наконец, мы отменим поле даты, а затем заменим оставшиеся ~ на косую черту, чтобы дать полный путь к файлу.

Примечание: это будет работать, только если ваши файлы имеют номер дорожки в начале имени файла, а также не даст правильных результатов для любого файла с ~ в любом месте пути к файлу (каталог или имя файла). Он не был выбран по какой-либо особой причине, вы можете заменить его более подходящим персонажем, если это необходимо. Требуется замена символа (в отличие от использования косой черты в качестве разделителя сортировки), поскольку (я полагаю!) Уровень подкаталога, в котором находится каждый файл, потенциально может меняться.