wfmedia.ch

rename

rename ist ein Programm für die Kommandozeile, das es ermöglicht, Dateien eines Ordners mithilfe der regulären Ausdrücke von Perl umzubenennen. rename und der Shell-Befehl mv sind nicht dasselbe und bieten jeweils unterschiedliche Möglichkeiten. Dies lässt sich prinzipiell auch direkt im Namen erkennen: rename ("umbenennen") dient der Umbenennung von Dateien, mv ("verschieben") kann daneben auch Dateien von Verzeichnis nach Verzeichnis verschieben.

rename ist im Vergleich zu mv ein einfacher Weg, eine große Anzahl von Dateien eines Ordners umzubenennen. Ansonsten ist die Funktionalität von rename nur über zahllose einzelne mv-Befehle im Terminal oder über ein Bash-Skript zu erreichen. rename hat jedoch auch klare Grenzen. Nicht möglich sind dabei u.a.:
1. V erschieben von Dateien in andere Ordner
2. Metadaten wie Autor, Erstellungsdatum o.Ä. in den Dateinamen einfließen lassen
3. Dateien basierend auf anderen Dateinamen umbenennen


Installation
rename ist bei Ubuntu ein Symlink auf /usr/bin/prename, das wiederum Teil des Pakets perl ist und in der Standardinstallation von Ubuntu enthalten ist. Spätestens ab Ubuntu 18.04 ist /usr/bin/prename im Paket rename enthalten.
Will man das Programm rename aus dem Paket util-linux verwenden, lautet der Befehl:
rename.ul

Verwendung
Der rename-Befehl bezieht sich immer auf das aktuelle Verzeichnis. Er sieht dabei grundsätzlich wie folgt aus:
rename OPTIONEN 'REGULÄRER_AUSDRUCK' DATEIEN

Der reguläre Ausdruck muss dabei in der Perl-Syntax sein. Diese sieht wie folgt aus:
s/SUCHSTRING/ERSETZUNGSSTRING/MODIFIER

Die umzubenennenden Dateien folgen einer Wildcard-Syntax, wo der * für eine beliebige Anzahl von Zeichen steht.

Syntax der regulären Ausdrücke in Perl

Selektoren Beschreibung
\w Jeden Buchstaben, jede Zahl und den Unterstrich (_)
\d Jede Zahl
\s Jedes Leerzeichen
. ein beliebiges Zeichen
[abc] Jedes in der eckigen Klammer eingeschlossene Zeichen
[^abc] Alle Zeichen, die nicht in der eckigen Klammer sind
^ Anfang des Dateinamens
$ Ende des Dateinamens
\ maskiert das folgende Zeichen