%20%E8%88%87%20Unix%2FLinux%20%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F%E5%8C%B9%E9%85%8D.png)
我有幾個文件的名稱
(a).1
(a).2
...
(a).100
由於許多處理工具並不真正喜歡檔案名稱中的(
and ,)
我認為最好將它們重命名為不同的名稱。我在谷歌上搜尋了重命名文件,發現了一個很棒的工具rename
,我可以在其中輸入正規表示式。好吧,讓我們試試這個:
$ rename -v s/\(a\)/b/ \(a\).*
(a).1 renamed as (b).1
(a).2 renamed as (b).2
(a).3 renamed as (b).3
嗯,不是我所期望的。經過一番谷歌搜尋後,我發現這\(
\)
是一個分組運算符。這是有道理的,因為我沒有(
)
在命令中轉義。
我透過使用.
匹配所有類型值的字元解決了重命名問題:
rename -v s/.b./b/ \(b\).*
這個解決方案並不是很好。那麼如何在 Bash/Linux/Unix 正規表示式中匹配(
and 呢?)
答案1
這是您需要的:
find -name "(*)*" -type f | rename 's/\(|\)//g'
它首先在當前目錄中查找與所描述的名稱相符的文件,然後透過刪除括號來重新命名它們。您可以看到匹配的字元 ( 和 ) 被替換為任何內容。