我正在尝试创建一个播放列表,与您通常在iTunes中看到的"最近添加的专辑"播放列表相同,但使用$NUM_OF_DAYS_BEFORE参数。
我使用了这篇文章中的大部分想法:如何递归地找到并列出目录中带有子目录和时间的最新修改文件?
我已经创建了一个脚本,我可以运行以下参数:
create_m3u /dir_root/with/mp3s 60
其中$1是我的mp3的根目录(其中有文件夹也有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
,这是我想要的方式(部分)-按日期排序,当专辑被添加到文件系统/PC。但是我还想让每张专辑按歌曲编号01、02、03、04排序……从每个文件夹/相册中取出,而不是上面看到的无序数字。
有没有人有任何建议,我如何才能做到这一点不同,所以我可以得到想要的结果?
您的原始命令有一些冗余—您链接的问题需要输出中的日期,而您不需要,因此您可以跳过stat
输出的一些字段。也可以用find -printf
跳过stat
。这应该可以工作(抱歉,部分未经过测试):
find $1 -type f -iregex '.*.mp3' -mtime -$2 --printf "%T@~.%h~%fn" |
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
然后我们首先按日期排序,然后按文件名排序(都是数字,并使用~
作为字段分隔符)。最后,我们去掉日期字段,然后用正斜杠替换剩余的~
,以给出完整的文件路径。
注意:这将只工作,如果你的文件都有轨道号在文件名的开始,也不会给任何文件的~
在文件路径(目录或文件名)的任何地方正确的结果。没有任何特殊的原因选择它,如果有必要,你可以用更合适的字符替换它。需要替换字符(而不是使用正斜杠作为排序分隔符),因为(我假设!)每个文件所在的子目录级别可能会有所不同。