创建"Recently Added Albums" m3u 播放列表



我正在尝试创建一个播放列表,与您通常在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

然后我们首先按日期排序,然后按文件名排序(都是数字,并使用~作为字段分隔符)。最后,我们去掉日期字段,然后用正斜杠替换剩余的~,以给出完整的文件路径。

注意:这将只工作,如果你的文件都有轨道号在文件名的开始,也不会给任何文件的~在文件路径(目录或文件名)的任何地方正确的结果。没有任何特殊的原因选择它,如果有必要,你可以用更合适的字符替换它。需要替换字符(而不是使用正斜杠作为排序分隔符),因为(我假设!)每个文件所在的子目录级别可能会有所不同。

最新更新