Es gibt keinen eigenen Befehl zum Umbenennen. Stattdessen nutzt du mv (move), der ursprünglich zum Verschieben gedacht ist. Für mehrere Dateien auf einmal ist rename die bessere Wahl.

Dateien umbenennen mit mv

Der mv-Befehl verschiebt Dateien an einen neuen Ort. Bleibt der Ort gleich, aber der Name ändert sich, ist das Umbenennen.

Syntax

mv [OPTIONEN] QUELLE ZIEL
  • QUELLE - Die Datei oder das Verzeichnis, das umbenannt werden soll.
  • ZIEL - Der neue Name.

Eine Datei umbenennen

mv bericht.txt bericht_final.txt

Die Datei bericht.txt heißt jetzt bericht_final.txt.

Ein Verzeichnis umbenennen

Verzeichnisse funktionieren genauso:

mv projekt/ projekt_archiv/

Das Verzeichnis projekt heißt jetzt projekt_archiv.

Überschreiben verhindern

Standardmäßig überschreibt mv eine bestehende Zieldatei ohne Warnung. Die Option -i fragt vorher nach:

mv -i alte_datei.txt neue_datei.txt

Mit -n wird niemals überschrieben:

mv -n alte_datei.txt neue_datei.txt

Mehrere Dateien umbenennen mit mv

Der mv-Befehl kann nur eine Datei auf einmal umbenennen. Für mehrere Dateien kombinierst du ihn mit einer Schleife.

Dateiendungen ändern

Diese Schleife benennt alle .html-Dateien in .php um:

for f in *.html; do
    mv -- "$f" "${f%.html}.php"
done

Der Ausdruck ${f%.html} entfernt die Endung .html vom Dateinamen. Das doppelte Minuszeichen -- schützt vor Dateinamen, die mit einem Bindestrich beginnen.

Mit find kombinieren

Der find-Befehl findet Dateien auch in Unterverzeichnissen:

find . -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;

Dieser Befehl durchsucht das aktuelle Verzeichnis rekursiv und benennt jede gefundene .html-Datei um.

Der rename-Befehl

Für komplexe Umbenennungen mehrerer Dateien ist rename das richtige Werkzeug. Er verwendet reguläre Ausdrücke und kann viele Dateien mit einem einzigen Befehl verarbeiten.

Installation

Die Perl-Version von rename ist nicht überall vorinstalliert.

Debian/Ubuntu:

sudo apt install rename

Fedora/CentOS:

sudo yum install prename

Arch Linux:

yay perl-rename

Syntax

rename [OPTIONEN] 'PERL-AUSDRUCK' DATEIEN

Der Perl-Ausdruck folgt dem Muster s/SUCHE/ERSETZUNG/.

Dateiendungen ändern

rename 's/\.html$/.php/' *.html

Das Dollarzeichen $ verankert die Suche am Ende des Dateinamens. Der Punkt ist mit Backslash maskiert, da er in regulären Ausdrücken “beliebiges Zeichen” bedeutet.

Vorschau ohne Änderung

Die Option -n zeigt, was passieren würde, ohne Dateien tatsächlich umzubenennen:

rename -n 's/\.html$/.php/' *.html

Die Ausgabe zeigt die geplanten Umbenennungen:

rename(datei-01.html, datei-01.php)
rename(datei-02.html, datei-02.php)
rename(datei-03.html, datei-03.php)

Führe den Befehl ohne -n aus, sobald das Ergebnis stimmt.

Leerzeichen durch Unterstriche ersetzen

rename 'y/ /_/' *

Der Ausdruck y/A/B/ ersetzt jedes Zeichen aus A durch das entsprechende Zeichen aus B.

Dateinamen in Kleinbuchstaben

rename 'y/A-Z/a-z/' *

Dieser Befehl wandelt alle Großbuchstaben in Kleinbuchstaben um.

Dateinamen in Großbuchstaben

rename 'y/a-z/A-Z/' *

Überschreiben erzwingen

Standardmäßig überschreibt rename keine bestehenden Dateien. Mit -f erzwingst du das Überschreiben:

rename -f 's/\.html$/.php/' *.html

Vorsicht: Prüfe vorher mit -n, ob keine wichtigen Dateien überschrieben werden.

Zusammenfassung

Für einzelne Dateien und Verzeichnisse verwendest du mv ALTNAME NEUNAME. Für mehrere Dateien ist rename mit regulären Ausdrücken effizienter. Mit rename -n testest du Umbenennungen gefahrlos, bevor du sie ausführst.