So mischen Sie Dateien und benennen sie sequenziell um

So mischen Sie Dateien und benennen sie sequenziell um

Ich habe einen Satz von PNG-Bildern, die derzeit der Reihe nach von 1 bis 1000 benannt sind. Wie kann ich diese Bilder nehmen und ihnen eine Zufallszahl zwischen 1 und 1000 neu zuweisen, sodass ich am Ende zwar denselben Bereich fortlaufender Zahlen habe, das Bild unter jeder Zahl aber nicht mehr dasselbe ist?

Antwort1

Könnte so gemacht werden:

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
  • Erstellen Sie zwei Arrays $namesund$new_names
  • wir müssen es so benennen, .tmpdass vorhandene Dateien nicht überschrieben werden. Wir beheben dies mit rename.
  • Führen Sie eine Schleife über die Array-Schlüssel aus und führen Sie sie mvfür jeden aus.

Hinweis: Um den Befehl tatsächlich auszuführen, entfernen Sie das echound -naus rename.

verwandte Informationen