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.