ファイルセットの名前を変更しようとしています。ファイルには次の形式があります。
frame\[d]+_object.bin
私のファイルの番号は1から1500までで、ファイル名を100から199まで変更したいと思います。
私は次のrename
コマンドを試しました
rename -n 's/frame1[\d]{2}_/sprintf("%05d", $&)/e' *.bin
他の目的に使用する他のコマンドを適用しましたが、出力は次のようになります。
frame198_simobject0.bin -> 00000simobject0.bin
frame199_simobject0.bin -> 00000simobject0.bin
コマンドの代替ルールがどのように機能するかはよく理解されていないので、ここで役に立ちます。
ベストアンサー1
$&
frame
先頭と末尾の文字列を含む、一致する完全な文字列です_
。数値ではないため、%05d
失敗に応じて書式設定を試みます。
あなたは次のようなものが欲しいかもしれませんs/frame(1\d{2})_/sprintf("frame%05d_", $1)/e
前任者。
$ rename -n 's/frame(1\d{2})_/sprintf("frame%05d_", $1)/e' *.bin
rename(frame198_simobject0.bin, frame00198_simobject0.bin)
rename(frame199_simobject0.bin, frame00199_simobject0.bin)
[...]
文字範囲を括弧で囲む必要はありません\d
。