Linux
Umbenennen von Dateien unter Linux mit Schleifen
Wenn man mehrere Dateien umbenennen möchte, aber keine Programme wie rename zur Verfügung hat, so sollte man sich auf der Konsole kurz mit FOR-Schleifen auseinandersetzen. Bei nur einer Datei oder wenn rename vorhanden ist, kann man Dateien unter Linux einfach umbenennen.
Eine simple Programmschleife für das Umbenennen mehrerer Dateien:
for i in *.jpg; do mv $i ${i%.jpg}_neu.jpg; done
Bei diesem Beispiel werden alle .jpg Dateien in "altername_neu.jpg" umgewandelt. Die Linux Shell erlaubt solche kompakte Programmschleifen in einer einachen Befehlsaufforderung.
Zum leichteren Verständnis noch ein Beispiel:
for i in DSC*; do mv $i 2002_10_14-${i#DSC}; done
Das Beispiel benennt alle DSC* Dateien in 2002_10_14_bild_*.jpg um.
Leerzeichen in der Datei
Wenn aber jetzt Leerzeichen in der Datei vorkommen, muss man mit Anführungszeichen arbeiten (Bsp.: DSC 23.jpg).
for i in "DSC "*.jpg; do mv "$i" "2005_05_-${i#DSC}"; done
Wenn man Dateien mit Leerzeichen nicht unter Anführungszeichen setzen, kommen Fehlermeldungen wie diese "Beim Verschieben mehrerer Dateien muß das letzte Argument ein Verzeichnis sein" zu Stande.
Fortlaufende Nummern
Fortlaufende Nummern beim Umbenennen kann man ebenfalls mit Hilfe von Schleifen vergeben, wenn man eine Variable mitzählen läßt.
let a=1; for i in DSC*.jpg; do let a=a+1; mv $i 2005_05_$a.jpg; done
Die Anzeige der Nummer kann auch formatiert werden. Dazu kann man auf printf zurückgreifen:
let a=0; for i in DSC*.jpg; do let a=a+1; b=`printf 2005_05_%03d.jpg $a`; echo "mv $i $b"; done
In diesem Beispiel wird dreistellig gezählt (001, 002, ...)
Erweitern mit anderen Programmen
Mit dieser Basis lassen sich natürlich die unterschiedlichsten Dinge anstellen. Hier noch kurz zwei Beispiele:
Ersetzen mit sed
Wer gerne mit sed arbeitet kann natürlich hier auch reguläre Ausdrücke ins Spiel bringen. Der Einfachheit halber aber nur ein sehr einfaches Beispiel:
for i in *.jpg; do b=`echo $i | sed "s/ dieser viel zu lange Urlaubsname muss weg / /"`; mv "$i" "$b";done
Groß- und Kleinbuchstaben mit tr
Einfach mal alles auf Kleinbuchstaben bringen ist natürlich auch mit einer derartigen Schleife möglich:
for i in *.jpg; do b=`echo $i | tr [:upper:] [:lower:]`; mv "$i" "$b";
Umbenennen unter Linux mit Rename und mv
Umbenennen von einzelnen Dateien unter Linux oder von mehreren mit Rename.
Um einen Diskussionsbeitrag zu posten müssen Sie eingeloggt sein.