名前変更コマンドで変数値を増やす方法

名前変更コマンドで変数値を増やす方法

ファイル名を次のように昇順の数値形式に変更したいと思います。

04.jpg
05.jpg
06.jpg

したがって、変数の値を増やし、それに渡す方法を考える必要がありますrename。インターネットで次のように指示します。

rename -n 'our $i; s/\d+/sprintf("new\/%03d", $i++)/e' *.*

要点は、これがどのように機能するのか理解していないということです。これまでは、これは名前の変更のために不明な変数への参照を渡すour $iことに応答すると推測できます。$i次に、部分的に1つを追加しますsprintf("new\/%03d", $i++)。この結論に基づいて、私は次のことを試みることにしました。

i=4
rename -n 'our $i; s/\d+/sprintf("new\/%03d", $i++)/e' *.*

しかし、それは失敗しました。$i名前の変更が期待どおりに機能するように開始値をどのように設定しますか?

ベストアンサー1

そしてzsh

autoload zmv
n=0; zmv -n '*.jpg(#qn[1,100])' 'new/${(l[2][0])$((++n))}.jpg'

最大100個のJPEGファイルの名前を変更できます(リストは数字でソートされています)。

-n必要に応じてテストを実行するために削除してください)。

perl-basedrenameとデフォルトのシェルを使用すると、同様の操作を実行できます(元のリストの数値ソートとプロテクターなしzmv)。

rename -n '
  our $i //= 1;
  exit if $i > 100;
  $_ = sprintf "new/%02d.jpg", $i++' ./*.jpg

renameperlを使用して、ループ内の各ファイルに対して指定されたコードを実行します$_。コードは$_ファイルの新しい名前に変更されます。

our $i範囲はここで定義されています$i。欲しくない地元のあるファイルから次のファイルまで記憶するデルタ値の範囲ですmy $i(詳細を参照).$iourperldoc -f our

Perlの設定s/regexp/replacement/flags$_。最初から代替名を作成する場合、ここでは必要ありません。

おすすめ記事