正規表現パターンを使用して Linux でファイルの名前を変更する

正規表現パターンを使用して Linux でファイルの名前を変更する

たくさんのファイルの名前を変更したいのですが

Tum Hi Ho [www.DJMaza.Com].mp3Tum Hi Ho.mp3

そのために、このコマンドを使用しました。しかし、どういうわけか機能しません。

`rename -n 's/(.*)([.*])(\.mp3)/$1$3/' *.mp3`

答え1

近かったけど、まだ足りない:

rename -n 's/\[[^\]]+\]//' *.mp3

問題は、これが[]特殊な正規表現構造であるため、実際の括弧と一致させるには括弧をエスケープする必要があることです。これが、私のバージョンでのバックスラッシュの目的です。

エスケープされていない括弧は文字クラスと呼ばれるものを形成します。文字クラスは基本的に括弧内の任意の文字に一致します。つまり、ピリオドまたはアスタリスクに一致します。クラスの先頭に[.*]キャレット ( ) を追加すると、任意の文字に一致します。^ない括弧内。

私の正規表現では、開き括弧\[と、閉じ括弧ではない 1 つ以上の文字、[^\]]+および閉じ括弧を一致させ\]、そのすべてを削除します。

関連情報