Unix/Linux 正規表現による () のマッチング

Unix/Linux 正規表現による () のマッチング

私はいくつかのファイルを持っています

(a).1
(a).2
...
(a).100

多くの処理ツールはファイル名に「」が含まれることをあまり好まないので()別の名前に変更するのが最善だと思いました。ファイル名の変更について Google で検索したところ、正規表現を入力できる素晴らしいツールを見つけました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'

まず、現在のディレクトリ内で記述された名前に一致するファイルを検索し、括弧を削除して名前を変更します。一致する文字 ( および ) が何も置き換えられていないことがわかります。

関連情報