このPerl正規表現はなぜ逆参照をキャプチャしないのですか?

このPerl正規表現はなぜ逆参照をキャプチャしないのですか?

ファイルディレクトリがあります

$ ls -1
ep2.mp4
ep3.mp4
ep4.mp4
ep5.mp4
ep6.mp4
ep7.mp4

renamePerlユーティリティを使用して、すべてのファイルを次のように作成したいと思います。

ep02.mp4 

私が使用するコマンド

rename -n "s/([0-9])/0${1}/" *.mp4

現在の結果

ep2.mp4 renamed as ep0.mp4
ep3.mp4 renamed as ep0.mp4
ep4.mp4 renamed as ep0.mp4
ep5.mp4 renamed as ep0.mp4
ep6.mp4 renamed as ep0.mp4
ep7.mp4 renamed as ep0.mp4

元の番号をキャプチャして新しいファイル名に挿入するにはどうすればよいですか?

ベストアンサー1

\代替文の周囲に単一引用符(またはエスケープ)を使用してください。それ以外の場合、シェルはそれを${1}変数として扱います。

だからあなたはこれを行うことができます:

rename -n 's/([0-9])/0${1}/' *.mp4

または

rename -n "s/([0-9])/0\${1}/" *.mp4

おすすめ記事