2011-12-17 69 views
0

我想组织我的mp3文件并使用模式:艺术家 - 歌曲重新命名它们。使用正则表达式重命名mp3

我需要一个正则表达式来选择第一个破折号之前的所有单词,然后是最后一个破折号和所有后面的字符。

在这个例子中,[09]体制崩溃-Toxicity点 - 03 - 印章Suey.mp3:第一破折号前

  1. 所有字的项目:一个向下
  2. 最后冲刺系统: -
  3. 一切的最后冲刺后:印章Suey.mp3

我该怎么办呢?

回答

0

有一个linux命令rename这正是你想要的。
例如,重命名匹配“名为* .bak”剥去扩展名的文件,你可能会说

rename 's/\.bak$//' *.bak 

要转换大写名称来降低,你会使用

rename 'y/A-Z/a-z/' * 

要重命名[09]系统下行-Toxicity - 03 - 斩波Suey.mp3毒性 - 斩波Suey.mp3

# you should rewrite regex to meet your requirement 
rename 's/.*-(.*)-.*-(.*)/$1 - $2/' *.mp3 

这些是Windows音乐播放器foobar2000,它可以很好地完成这项工作。
属性 - 从其他领域>格式......

0

如果您使用Windows,我强烈建议您使用免费软件程序:MP3Tag。它很容易做你要求的重命名(和更多)。

0

可能,这可能帮助 -

sed 's/[[0-9]\+] \([A-Za-z ]*[^-]\) -.*[^-]- \(.*\)/\1-\2/' 

测试:

[jaypal:~/temp] echo "[09] System Of A Down -Toxicity - 03 - Chop Suey.mp3" | 
sed 's/[[0-9]\+] \([A-Za-z ]*[^-]\) -.*[^-]- \(.*\)/\1 - \2/' 
System Of A Down - Chop Suey.mp3 

OR

awk -F"-" '{print $1"-"$4}' | sed 's/[[0-9]\+] //g' 

测试:

[jaypal:~/temp] echo "[09] System Of A Down -Toxicity - 03 - Chop Suey.mp3" | 
awk -F"-" '{print $1"-"$4}' | sed 's/[[0-9]\+] //g' 
System Of A Down - Chop Suey.mp3 
0

您可以找到 “中间模式” 做(-.*-)-取代。要删除您可以使用的号码(\[[0-9]*\])