Anleitung: Dateien massenhaft im Linux-Terminal umbenennen
Drei Dateien lassen sich wunderbar im Dateibrowser umbenennen, 30 aber besser auf der Kommandozeile. Unter Linux ist das erfreulich flexibel und wir zeigen Euch ganz kurz und bündig, wie Ihr einerseits alle Dateien eines Typs komplett neu benennt und schlicht durchnummeriert. Andererseits könnt Ihr auch Teile des Namens behalten, beispielsweise die Nummerierung, aber obskure Kamera-Präfixe wie "DMC_018478xl" durch ein schickes "Urlaub_Bahamas_" ersetzen. Und so geht's:
Beginnen wir mit der kompletten Neubenennung: Alle txt-Dateien sollen nach text-1.txt, text-2.txt und so weiter umbenannt werden. Folgender Befehl hilft: $ ls *.txt | cat -n | while read n f; do mv "$f" "text-$n.txt"; done
Die Zeile besteht aus drei Teilen: ls listet alle txt-Dateien auf und der cat-Befehl nummeriert die Dateinamen. Die while-Schleife durchläuft jetzt diese n Dateien und benennt sie per mv um - "$f" steht für den alten Dateinamen. Der neue Dateiname lautet dann "text-$n.txt", wobei $n durch die entsprechende Ziffer der Nummerierung ersetzt wird.
Im zweiten Fall sollen Dateien nach dem Muster "unfug1.jpg", "unfug2.jpg" nach "foto_1.jpg" etc. umbenannt werden, allerdings sollt die Original-Nummerierung bestehen bleiben. Versucht es damit: $ ls *.jpg | egrep unfug | rename -n 's/\D{5}(\d)/foto_$1/'
Wieder werden per ls die gewünschten Dateien aufgelistet, anschließend sucht egrep diejenigen heraus, die "unfug" heißen. Nun kommt rename: Das "-n" sorgt dafür, dass nur simuliert, nicht umbenannt wird - man verliert hier schnell mal Dateien; entfernt den Schalter einfach, wenn Ihr glücklich seid. Es folgt ein regulärer Ausdruck in Perl-Notation. In Kürze: Das "s" steht für ersetzen (substitute). Nach dem / folgt, was ersetzt werden soll, hier fünf Buchstaben ("\D{5}"), gefolgt von einer Ziffer ("\d") - also "unfug1". Die runden Klammern bei der Ziffer sorgen dafür, dass diese Ziffer in der Variablen $1 gespeichert werden. Nach dem folgenden / folgt der neue Name, hier "foto_" plus den Inhalt der Variable $1, also die jeweilige Ziffer aus dem Originalnamen.