如何使用重新命名命令來修復這些檔案名稱?

如何使用重新命名命令來修復這些檔案名稱?

我正在嘗試更改看起來像的文件

01 Track name.mp3

進入

01 - Track name.mp3

到目前為止我徒勞的嘗試是

rename '0. ' '$&- ' *.mp3
rename 's/0. /$&- /' *.mp3
rename '/0. /' '/$&- /' *.mp3
rename 's/0.\ /$&-\ /' *.mp3
rename 's/0.\ /$1-\ /' *.mp3

答案1

假設 perlrename指令:

您已經非常接近最後一個命令了。rename 's/(0.) /$1 - /' *.mp3會工作。不需要轉義空格,它們在正規表示式中沒有特殊含義(它們在檔案名稱中有特殊含義,但這在這裡並不重要),並且您需要在要重用的部分周圍加上括號。

答案2

一定要用命令嗎rename

$ ls
01 Track name.mp3  02 Track name.mp3  03 Track name.mp3

$ for a in *.mp3
> do
> mv -i "$a" "${a%% *} - ${a#* }"
> done

$ ls
01 - Track name.mp3  02 - Track name.mp3  03 - Track name.mp3

答案3

$ rename 's/^(\d\d)\s*/$1 - /' *.mp3

這將重命名文件名開頭有兩位數字的所有 MP3 文件,並在數字後面插入空格-破折號-空格。於是01 Track name.mp3就會變成01 - Track name.mp3

從您自己的嘗試來看,所有檔案名稱都以數字零開頭,並且您似乎想要插入破折號直接地數字後面跟著一個空格:

$ rename 's/^(0\d)\s*/$1- /' *.mp3

這將轉換01 Track name.mp301- Track name.mp3.

答案4

有兩(三)個擦除指令:一個是擦除指令的一部分實用程式Linux每個非嵌入式 Linux 系統上都安裝了一個軟體包,其中一個(實際上是兩個變體)基於 Perl。看所有重命名是怎麼回事:預命名、重新命名、檔案重新命名?

util-linux 指令非常基本,但在極少數情況下它可以執行您想要的操作。將第一個空格替換為空格-破折號-空格:

rename ' ' ' - ' [0-9][0-9]\ [^-]*

相關內容