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