次のような多くのファイルの名前を変更したいと思います。
Tum Hi Ho [www.DJMaza.Com].mp3
到着Tum Hi Ho.mp3
そのために私はこのコマンドを使用しました。しかし、何とか動作しません。
`rename -n 's/(.*)([.*])(\.mp3)/$1$3/' *.mp3`
答え1
近いですが、十分ではありません。
rename -n 's/\[[^\]]+\]//' *.mp3
問題は、これが[]
特殊な正規表現構造なので、実際の角かっこと一致させるには角かっこをエスケープする必要があることです。これが私のバージョンではバックスラッシュの目的です。
エスケープされていない括弧は文字クラスと呼ばれるものを形成します。文字クラスは、デフォルトで角括弧内のすべての文字と一致します。したがって、[.*]
ピリオドまたはアスタリスクと一致します。^
クラスの先頭にキャレット()を追加すると、すべての文字と一致します。いいえかっこ内。
\[
私の正規表現では、開くかっこと閉じ括弧ではなく、1つ以上の文字[^\]]+
と閉じ括弧を一致させ、\]
その文字をすべて削除します。