我想組織我的mp3文件並使用模式:藝術家 - 歌曲重新命名它們。使用正則表達式重命名mp3
我需要一個正則表達式來選擇第一個破折號之前的所有單詞,然後是最後一個破折號和所有後面的字符。
在這個例子中,[09]體制崩潰-Toxicity點 - 03 - 印章Suey.mp3:第一破折號前
- 所有字的項目:一個向下
- 最後衝刺系統: -
- 一切的最後衝刺後:印章Suey.mp3
我該怎麼辦呢?
我想組織我的mp3文件並使用模式:藝術家 - 歌曲重新命名它們。使用正則表達式重命名mp3
我需要一個正則表達式來選擇第一個破折號之前的所有單詞,然後是最後一個破折號和所有後面的字符。
在這個例子中,[09]體制崩潰-Toxicity點 - 03 - 印章Suey.mp3:第一破折號前
我該怎麼辦呢?
有一個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
,它可以很好地完成這項工作。
屬性 - 從其他領域>格式......
如果您使用Windows,我強烈建議您使用免費軟件程序:MP3Tag。它很容易做你要求的重命名(和更多)。
可能,這可能幫助 -
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-9]*\])