このユーティリティを使用しています名前を変更する複数のファイルの名前を変更すると、グループ識別子間の数をエスケープする方法がわかりません。これは基本的なものであるに違いありませんが、私はこのような状況を経験したことがなく、直観が正しいエスケープ文字を見つけるのに役立ちません。
ファイル名の数を23
次のように変更したいと思います。
rename -n 's/(.*)([0-9]{2})(.*)/$1"23"$3/' *
$ rename -n 's/(.*)([0-9]{2})(.*)/$1"23"$3/' *
rename(Request22Message.json, Request"23"Message.json)
rename(Response22ExpectedMessage.json, Response"23"ExpectedMessage.json)
rename(Response22Message.json, Response"23"Message.json)
この場合、ドットは接続文字として扱うことができます。
$ rename -n 's/(.*)([0-9]{2})(.*)/$1.23.$3/' *
rename(Request22Message.json, Request.23.Message.json)
rename(Response22ExpectedMessage.json, Response.23.ExpectedMessage.json)
rename(Response22Message.json, Response.23.Message.json)
いいえ。
答え1
実際に数字をエスケープする問題ではありません。$123
キャプチャグループで参照を明確にする問題です123
。この状況のケースはperlre
以下の文書にあります。$1 ではなく警告\1
しようとすると
s/(\d+)/\1000/;
言葉であいまいさを取り除くことはできませんが、言葉であいまい
\{1}000
さを修正することはできます${1}000
。
例えば
rename -n 's/(.*)([0-9]{2})(.*)/${1}23$3/' *.json
または(対称のため)
rename -n 's/(.*)([0-9]{2})(.*)/${1}23${3}/' *.json
あなたできる文字列連結演算子を使用します.
が、これには実行フラグを追加する必要があります。
rename -n 's/(.*)([0-9]{2})(.*)/$1."23".$3/e' *.json