我正在嘗試更改看起來像的文件
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.mp3
為01- Track name.mp3
.
答案4
有兩(三)個擦除指令:一個是擦除指令的一部分實用程式Linux每個非嵌入式 Linux 系統上都安裝了一個軟體包,其中一個(實際上是兩個變體)基於 Perl。看所有重命名是怎麼回事:預命名、重新命名、檔案重新命名?
util-linux 指令非常基本,但在極少數情況下它可以執行您想要的操作。將第一個空格替換為空格-破折號-空格:
rename ' ' ' - ' [0-9][0-9]\ [^-]*