Rename
重命名文件夾中的文件名時,萬用字元不適用於重命名
我在一個文件夾中有一系列文件,文件名中間有一個以
_S
(_S1
,S2
,S143
….) 開頭的字元串,我需要用下劃線刪除/替換它們。像這樣file1_S1_R1 file2_S2_R1 file3_S95_R1 file4_S143_R1
應該是
file1_R1 file2_R1 file3_R1 file4_R1
我試過標準
rename 's/_S*_/_/g' *
命令。然而,什麼也沒有發生。顯然,萬用字元不適用於我的電腦上的重命名。
_
用反斜杠轉義(無論如何_
都不是保留字元)或這樣的技巧沒有區別。我究竟做錯了什麼?
假設您的
rename
實用程序是 Perlrename
實用程序(它採用 Perl 表達式,通常是替換錶達式,作為其第一個參數):$ ls -l total 0 -rw-r--r-- 1 kk wheel 0 Oct 4 11:00 file1_S1_R1 -rw-r--r-- 1 kk wheel 0 Oct 4 11:00 file2_S2_R1 -rw-r--r-- 1 kk wheel 0 Oct 4 11:00 file3_S95_R1 -rw-r--r-- 1 kk wheel 0 Oct 4 11:00 file4_S143_R1
$ rename 's/_S\d*_/_/g' * $ ls -l total 0 -rw-r--r-- 1 kk wheel 0 Oct 4 11:00 file1_R1 -rw-r--r-- 1 kk wheel 0 Oct 4 11:00 file2_R1 -rw-r--r-- 1 kk wheel 0 Oct 4 11:00 file3_R1 -rw-r--r-- 1 kk wheel 0 Oct 4 11:00 file4_R1
您可能假設您將使用文件名通配模式而不是 Perl 正則表達式,因此您弄錯了正則表達式。我通過將
S*
(匹配零個或多個S
字元)更改為S\d*
(匹配一個S
後跟零個或多個數字)來修復它。