Shell

為什麼這個 perl 正則表達式不擷取反向引用?

  • December 13, 2015

我有一個文件目錄

$ ls -1
ep2.mp4
ep3.mp4
ep4.mp4
ep5.mp4
ep6.mp4
ep7.mp4

我想使用 perlrename實用程序使所有文件看起來像

ep02.mp4 

我正在使用的命令

rename -n "s/([0-9])/0${1}/" *.mp4

目前結果

ep2.mp4 renamed as ep0.mp4
ep3.mp4 renamed as ep0.mp4
ep4.mp4 renamed as ep0.mp4
ep5.mp4 renamed as ep0.mp4
ep6.mp4 renamed as ep0.mp4
ep7.mp4 renamed as ep0.mp4

如何擷取原始數字並插入新文件名?

在替換語句周圍使用單引號(或轉義\),否則 shell 將${1}視為變數。

所以你可以這樣做:

rename -n 's/([0-9])/0${1}/' *.mp4

或者

rename -n "s/([0-9])/0\${1}/" *.mp4

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