Rename

簡化複雜的音樂文件名

  • January 23, 2022

我有一個很大的音樂文件目錄,其標題遵循以下格式:

Title_stringOfNumbers - Artist.mp3

我的目標是刪除後跟數字的下劃線並將藝術家的名字與標題交換。

例如,原始文件名是:

whats up_7979841261 - randomArtist.mp3

我想要的文件名:

randomArtist - whats up.mp3

標題可以包含特殊字元(', !, ., _, (, ), /\甚至是日文字元)和數字,但下劃線字元和數字在文件名的第一部分永遠不會彼此相鄰(因此沒有multiple word title_2_6878492178471289 - artist.mp3類似文件)。

到目前為止,我嘗試使用rename終端中的命令刪除下劃線,但我設法遇到了障礙,因為這條線沒有做任何事情,而且我不熟悉使用它。

rename 'y/_//' *

這一切都在使用 POP!_OS 21.10,所以任何適用於 Ubuntu 的東西也應該適用於我的系統。我使用了 Perl 腳本rename(與 一起安裝sudo apt install rename)。但是,我發現所有三個變體rename, prename, file-rename)都安裝在我的系統上。

您可以使用 (Perl) rename

rename -n 's/^(.*)(_\d+) - (.*)\.mp3$/$3 - $1.mp3/' *.mp3

如果結果看起來不錯,請刪除-n以實際執行操作。


如果您的文件有正確的id3標籤,最好使用這些標籤重命名:

例如mp3renameexiftool

sudo apt install mp3rename
mp3rename -s '&a - &t'
mp3rename *.mp3

使用循環mv和參數替換:

for i in *.mp3; do
 a="${i##* - }" # randomArtist.mp3
 n="${i%% - *}" # whats up_7979841261
 t="${a%%.*} - ${n//_[0-9]*/}.mp3" # randomArtist - whats up.mp3
 echo mv -- "$i" "$t" # mv -- randomArtist - whats up.mp3 → whats up - randomArtist.mp3
 # mv -- "$i" "$t"
done

在應用一個好主意之前是一個備份。實際的mv命令已被註釋,如果您對 echo 顯示的內容感到滿意,請取消註釋並執行。

引用自:https://unix.stackexchange.com/questions/687159