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?
command-line
Eure Majestät
quelle
quelle
Antworten:
Ich gehe davon aus, dass Sie ein korrektes Suffix für die Dateinamen beibehalten möchten:
Anmerkungen
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-for
Schleife. 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ählerc
und führt die eigentliche Umbenennung von Dateien durch. Der Dateiname$f
steht 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 Schleifedone
: Das bedeutet das Ende derfor
Schleife.quelle
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:
quelle
$i
doppelte Anführungszeichen einfügen, um es vor Wortaufteilung zu schützen, falls seine Dateinamen Leerzeichen oder andere schwierige Zeichen enthalten.