Wenn Ihr Tausende Dateien nach einem bestimmten Muster umbenennen wollt, könnt Ihr Euch entweder eine Woche Urlaub nehmen und das per Hand erledigen – oder Ihr bemüht einfach ein paar Minuten den guten alten Terminal und Reguläre Ausdrücke.

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.

while

Dass man für simples Durchnummerieren tatsächlich eine Schleife braucht ist nicht fein, aber einmal dran gewöhnt, geht’s ganz fix.

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.

rename

Ihr könnt beliebige Namensteile behalten, packt das gewünschte einfach in runde Klammern und sprecht es über $1, $2 etc. an

Und ftw:
rename_head

Über den Autor

Mirco Lang

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Stichwortschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler.

Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds.

Wenn ich Dir helfen konnte und/oder Du hier mehr über Open Source, Linux, Bastelkram oder auch Windows-Basics lesen möchtest:
Spendier mir einen Kaffee via Paypal.

Kommentieren:

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere

Anleitung: Dateien massenhaft im Linux-Termin…

1