Angenommen, ich habe einen Ordner mit Tausenden von Fotos, die alle zufällig benannt wurden. Wie kann man sie von der Kommandozeile / dem Terminal aus in photo1, photo2, ..., photo1000 umbenennen?
Angenommen, ich habe einen Ordner mit Tausenden von Fotos, die alle zufällig benannt wurden. Wie kann man sie von der Kommandozeile / dem Terminal aus in photo1, photo2, ..., photo1000 umbenennen?
Antworten:
Ich gehe davon aus, dass Sie ein korrektes Suffix für die Dateinamen beibehalten möchten:
c=1; for f in *.jpg ; do mv "$f" "photo$c.jpg" ; c=$(($c+1)) ; done
c=1: Dies initialisiert den Zähler. Sie können eine beliebige Zahl einstellen.
for f in *.jpg ; do: Dies bedeutet den Beginn einer Shell- forSchleife. Während es schwierig sein kann, Shell-Skripte zu erstellen, wenn Dateinamen Leerzeichen, Zeilenumbrüche oder andere schwierige Zeichen enthalten können, ist diese Konstruktion selbst gegen die feindlichsten Dateinamen sicher.
mv "$f" "photo$c.jpg": Dies verwendet den Zähler cund führt die eigentliche Umbenennung von Dateien durch. Der Dateiname $fsteht in doppelten Anführungszeichen, um den Namen vor den verschiedenen möglichen Shell-Erweiterungen zu schützen.
c=$(($c+1)): Dies erhöht den Zähler für die nächste Schleife
done: Das bedeutet das Ende der forSchleife.
mv "$f" "$(printf 'photo%04d.jpg' $c)"Alle Dateien erhalten eine 4-stellige, mit Nullen aufgefüllte Nummer, damit sie korrekt sortiert werden.
Sie können diesen Code verwenden:
for i in *.jpg; do let j+=1 ; mv "$i" "photo$j.jpg" ; done
$idoppelte Anführungszeichen einfügen, um es vor Wortaufteilung zu schützen, falls seine Dateinamen Leerzeichen oder andere schwierige Zeichen enthalten.