重複せずにファイル名をランダムに変更

重複せずにファイル名をランダムに変更

ファイル名の多いフォルダがありますが、そのうちのいくつかは本当に奇妙で意味がないので、名前を次に変更したいとします。

File-1
File-2
File-3
..

私はこれを試しました(エコはtryngのためのものです)

for name in *; do echo mv $name File-`echo $(( RANDOM % (10 - 5 + 1 ) + 1 ))`;done

しかし、重複をたくさん与えてください。

mv bio1 file-3
mv memory23 file-1
mv mernad file-3
mv nio2 file-4
mv nun3 file-4

ベストアンサー1

shuf(GNU coreutilsパッケージから)を使用することもできます。準備単一ランダムサンプルの代わりに - 次のようになります。

for f in *; do read i; echo mv -- "$f" "file-$i"; done < <(shuf -i 1-10)

または(おそらくより良いでしょう)シャッフルファイル名-その後、順番に名前を変更します。

i=1; shuf -z -e -- * | while IFS= read -rd '' f; do echo mv -- "$f" "File-$((i++))"; done

おすすめ記事