Donnerstag, 13. Februar 2014

Mehrere Dateien mit einem Befehl umbenennen

Um mehrere Dateien gleichzeitig umzubenennen, gibt es das KDE-Programm krename. Wer aber mit einer anderen grafischen Oberfläche arbeitet und nicht die KDE-Bibliotheken installieren möchte, kann auch auf das Kommandozeilenprogramm rename zurückgreifen.

In meinem Fall musste ich mehrere Bilder umbenennen. Damit ich sehen kann, wo und wann die Bilder gemacht wurden, sollten am Ende der Dateinamen, vor der Dateierweiterung, der Ort und das Jahr erscheinen. Da alle Bilder in dem Verzeichnis bei einem Fototermin gemacht wurden, stellte die Umbenennung mit rename kein Problem dar.

Die Syntax des rename-Befehls: rename -Option 'regulärer_Ausdruck' Dateien

Als Optionen stehen -f, -n und -v zur Verfügung. -f steht für "force" und bewirkt, dass bestehende Dateien überschrieben werden. Wenn man eine Datei umbenennt und es existiert bereits eine Datei mit dem Namen, wird sie bei der Verwendung dieser Option überschrieben. Bei Verwendung der Option -n ("no-act") wird nur ein Probelauf durchgeführt. Die Dateinamen werden so ausgegeben, wie sie sein würden, wenn man die Umbenennung tatsächlich durchführen würde. Die Option -v ("verbose") hat ebenfalls die Anzeige der umbenannten Dateien zur Folge, allerdings, wenn die Umbenennung tatsächlich erfolgt.

Im regulären Ausdruck wird festgelegt, welche Zeichen ersetzt werden sollen. Im Grunde schaut der Ausdruck so aus: 's/alt/neu/'. Der Ausdruck steht in einfachen Anführungszeichen. Das s steht für "substitute", also für "ersetzen". Zwischen zwei Schrägstrichen stehen die Zeichen, die ersetzt werden sollen, gefolgt von den neuen Zeichen. In meinem Fall sollte ich die Dateiendung ".JPG" durch die Zeichenkette "-Forstern-2011.jpg" ersetzen. Der Ausdruck lautete so: 's/\.JPG/-Forstern-2011\.jpg/'. Vor dem Punkten steht jeweils ein umgekehrter Schrägstrich. Der Grund dafür ist, dass der Punkt in einem regulären Ausdruck irgendein Zeichen bezeichnet. In diesem Fall ist der Punkt jedoch kein Platzhalter, sondern soll im Dateinamen wirklich auftauchen, nämlich vor der Dateierweiterung. Aus diesem Grund wird mit dem umgekehrten Schrägstrich festgelegt, dass es sich beim Punkt um ein tatsächliches Zeichen handelt.

Am Ende des rename-Befehls wird schließlich festgelegt, welche Dateien umbenannt werden sollen. In meinem Fall handelt es sich um alle Dateien mit der Endung ".JPG". Dies wird mit dem Ausdruck *.JPG bezeichnet.

Der ganze Befehl lautet also folgendermaßen:

rename -v 's/\.JPG/-Forstern-2011\.jpg/' *.JPG

Falls man sich nicht ganz sicher ist, wäre es sinnvoll zuerst einen Probelauf mit der Option "-n" zu machen. In diesem Fall würde der Befehl so ausschauen:

rename -n 's/\.JPG/-Forstern-2011\.jpg/' *.JPG