
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
$names
und$new_names
- wir müssen es so benennen,
.tmp
dass vorhandene Dateien nicht überschrieben werden. Wir beheben dies mitrename
. - Führen Sie eine Schleife über die Array-Schlüssel aus und führen Sie sie
mv
für jeden aus.
Hinweis: Um den Befehl tatsächlich auszuführen, entfernen Sie das echo
und -n
aus rename
.