
現在 1 から 1000 までの連番が付けられた .png 画像のセットがあります。これらの画像を 1 から 1000 までのランダムな番号に再割り当てして、連番の範囲は同じにして、各番号の下の画像が同じではなくなるようにするにはどうすればよいでしょうか。
答え1
次のように実行できます:
names=({1..1000}.png)
new_names=($(shuf -e {1..1000}.png.tmp))
for n in "${!names[@]}"; do
echo mv "${names[$n]}" "${new_names[$n]}"
done && rename -n 's/\.tmp$//' *.tmp
- 2つの配列を作成し
$names
、$new_names
- 既存のファイルを上書きしないように、 などの名前を付ける必要があります。
.tmp
これを で修正しますrename
。 - 配列のキーをループし、
mv
それぞれに対して実行します。
注: コマンドを実際に実行するには、からecho
と を削除します。-n
rename