rename
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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.:
Verschieben von Dateien in andere Ordner
Metadaten wie Autor, Erstellungsdatum o.Ä. in den Dateinamen einfließen lassen
Dateien basierend auf anderen Dateinamen umbenennen
Für solche Zwecke eignen sich spezielle Perl- oder Bash-Skripte. Unter Dateimanagement finden sich Programme zum Umbenennen mit grafischer Oberfläche.
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
Benutzung¶
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.
Optionen¶
Es lassen sich mehrere Optionen pro Kommando eingeben:
-n
oder--no-act
: Die Dateien werden nicht umbenannt und es wird jeweils im Terminal nur angezeigt, wie die Dateien bei einer solchen Umbenennung aussehen würden. Dies kann sinnvoll sein, wenn man sich nicht sicher ist, ob der reguläre Ausdruck funktioniert. Beispiel:rename -n 's/(.*)(Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember) (\d{4})(.+)/$1$4 $2 $3/i' *
-f
oder--force
: Überschreibt existierende Dateien, falls der neue Dateiname blockiert ist.-v
oder--verbose
: Schreibt eine Erfolgsnachricht pro umbenannter Datei ins Terminal, sodass man einfach prüfen kann, ob die Umbenennung funktioniert hat. Beispiel:rename -v 's/^Lenni Kravitz/Lenny Kravitz/' *.mp3
Syntax der regulären Ausdrücke in Perl¶
Syntax | |
Selektoren | |
\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 |
Quantifier | |
* | 0 bis unendlich |
+ | 1 bis unendlich |
? | 0 oder einmal |
{m,} | mindestens m-mal |
{,n} | maximal n-mal vorhanden |
{m,n} | mindestens m-mal und maximal n-mal |
Modifier | |
g | alle Vorkommen des Suchstrings ersetzen (global) |
i | Groß-/Kleinschreibung nicht beachten (case-insensitive) |
Sonstiges | |
() | Gruppierung einer Zeichenkette zur späteren Weiterverwendung |
| | oder-Operator |
\1, \2 | erste, zweite usw. Gruppierung im Suchstring |
$1, $2 | erste, zweite usw. Gruppierung im Ersetzungsstring |
Beispiele¶
Der folgende Befehl ersetzt in allen Dateien „Max Mustermann“ durch „Erika Mustermann“:
rename 's/Max Mustermann/Erika Mustermann/g' *
In allen .jpg-Dateien wird der Datumsformat
JJJJ-MM-DD
in das FormatDD.MM.JJJJ
geändert:rename 's/(\d{4})-(\d{2})-(\d{2})/$3.$2.$1/g' *.jpg
Datei-Erweiterung ändern (in diesem Fall .html in .xhtml):
rename 's/\.html$/.xhtml/' *.html
Links¶
Bulk renaming files in Ubuntu 🇬🇧 - Blogbeitrag, 11/2014
Shell/Befehlsübersicht Übersicht über verschiedene Shellbefehle