「テキスト名[1].m4a」などの内容を含むファイルの名前を「テキスト名[01].m4a」に変更したいと思います。
最初は、次のように書きました。
rename -n "s/\[(\d)\]/\[0$1\]/" *.m4a
コマンドが[0]
showに変わります。に[01]
変更すると、期待どおりに動作します。$1
\1
rename -n "s/\[(\d)\]/\[0\1\]/" *.m4a
\1 better written as $1 at (eval 5) line 1.
しかし、最初のコマンドが機能しないのはなぜですか、そしてどのように書き換えることができますか?という警告があります。
File::Rename version 0.20
と一緒に使用していますUbuntu 18.04.4 LTS
。
答え1
で"...$1..."
二重引用符を使用すると、シェルは$1
値に置き換えられます。それ文字列を渡す前に空の(シェルの)変数ですrename
。したがって、交換のみrename
を見て[0]
それに応じて実行できます。
シェルが$1
文字通り渡すようにするには、二重引用符の代わりにrename
単一引用符を使用します(Freddyが述べたように、代替文字列から角括弧をエスケープする必要はありません)。