staging.inyokaproject.org

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:

Wiki/Icons/terminal.png 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.:

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 Format DD.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 

Diese Revision wurde am 11. August 2019 19:32 von rklm erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Shell