2011-12-17 62 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]*\])