So benennen Sie mehrere Dateien gleichzeitig unter Linux um
Das Umbenennen mehrerer Dateien unter Linux klingt nach einer einfachen Aufgabe, kann aber ziemlich komplex werden. Es ist möglich, Dateien mit dem Befehl mv
und ein wenig Bash–Scripting in großen Mengen umzubenennen oder die Dienstprogramme mmv
und rename
zu verwenden, die normalerweise nicht standardmäßig installiert sind. In diesem Handbuch zeigen wir verschiedene Beispiele für das Umbenennen mehrerer Dateien gleichzeitig über die Linux-Befehlszeile.
Umbenennen mehrerer Dateien mit mv
Der Befehl mv
ist ein Standardteil von Linux und kann zum Umbenennen mehrerer Dateien verwendet werden. Einige Beispiele basieren auch auf anderen Standard-Linux-Dienstprogrammen wie ls
, find
, xargs
, etc.
Beispiel 1. Ändern Sie alle Dateinamen in Kleinbuchstaben.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
Beispiel 2. Ändern Sie alle Dateinamen in Großbuchstaben.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
Beispiel 3. Ändern Sie alle Dateierweiterungen von .jpeg
in .jpg
.
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
Beispiel 4. Entfernen Sie die Dateierweiterung .bak
aus allen Dateien.
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
Beispiel 5. Fügen Sie allen Dateien die Dateierweiterung .bak
hinzu.
$ for f in `ls`; do mv $f $f.bak; done
Beispiel 6. Verwenden Sie xargs
, um „_backup“ an jede Datei anzuhängen.
$ ls * | xargs -I{} mv {} {}_backup
Beispiel 7. Verwenden Sie die Befehle find
, sed
und mv
, um alle Dateien in Kleinbuchstaben zu ändern.
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
Beispiel 8. Verwenden Sie die Befehle find -exec
und mv
, um „_backup“ an jede Datei anzuhängen, die mit der Erweiterung .log
endet.
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
Beispiel 9. Ähnlich wie im vorherigen Beispiel, ersetzen Sie jedoch die Option -exec
von find durch xargs
, um „_backup“ an jede Datei anzuhängen, die mit der Erweiterung .log
endet.
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
Beispiel 10. Ersetzen Sie ein Muster in jeder Datei mit mv
und sed
. Dadurch wird „IMG“ in jeder .jpg
-Datei durch „Vacation“ ersetzt.
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
Beispiel 11. Fügen Sie den aktuellen Zeitstempel zu allen Dateien hinzu, die mit .log
enden. Dies würde eine Datei wie access.log
in access_20210418040151.log
ändern.
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
Umbenennen mehrerer Dateien mit rename
Das Dienstprogramm rename erleichtert unsere Massenbenennungsaufgaben ein wenig, aber das Dienstprogramm ist nicht immer standardmäßig installiert. Verwenden Sie den entsprechenden Befehl unten, um es mit dem Paketmanager Ihres Systems zu installieren.
Ubuntu, Debian und Linux Mint:
$ sudo apt install rename
Fedora, AlmaLinux, CentOS und RHEL:
$ sudo dnf install prename
Arch Linux und Manjaro:
$ sudo pacman -S perl-rename
-n
in Ihren Befehlen rename
, wenn Sie eine Vorschau der Änderungen anzeigen möchten, bevor Sie sie vornehmen.Beispiel 1. Ändern Sie alle Dateinamen in Kleinbuchstaben.
$ rename 'y/A-Z/a-z/' *
Beispiel 2. Ändern Sie alle Dateinamen in Großbuchstaben.
$ rename 'y/a-z/A-Z/' *
Beispiel 3. Entfernen Sie die Erweiterung .bak
aus allen Dateien.
$ rename 's/\.bak$//' *.bak
Beispiel 4. Ändern Sie die Erweiterung aller .jpeg
-Dateien in .jpg
.
$ rename 's/\.jpeg/\.jpg/' *.jpeg
Beispiel 5. Ändern Sie die Großbuchstaben-Erweiterung .JPG
in Kleinbuchstaben .jpg
für alle Dateien.
$ rename 's/\.JPG/\.jpg/' *.JPG
Beispiel 6. Entfernen Sie Leerzeichen aus allen Dateinamen.
$ rename "s/ *//g" *
Beispiel 7. Ersetzen Sie Leerzeichen durch Unterstriche für alle Dateinamen.
$ rename 's/\s+/_/g' *
Beispiel 8. Schreiben Sie den ersten Buchstaben aller Dateinamen groß.
$ rename 's/\b(\w)/\U/g' *
Beispiel 9. Ersetzen Sie ein Muster in jedem Dateinamen. Dieser Befehl ersetzt „IMG“ durch „Vacation“ in jeder .jpg
-Datei.
$ rename 's/IMG/Vacation/' *.jpg
Beispiel 10. Löscht einen Teil eines Dateinamens. Dieser Befehl entfernt „IMG_“ aus jeder .jpg
-Datei.
$ rename 's/IMG_//' *.jpg
Beispiel 11. Hängen Sie die Erweiterung .bak
an alle Dateien an.
$ rename 's/(.*)/.bak/' *
Umbenennen mehrerer Dateien mit mmv
Das Dienstprogramm mmv zeichnet sich durch das Umbenennen von Dateien auf der Grundlage von Mustern aus, z. B. das Entfernen oder Hinzufügen von Zeichenfolgen zu allen Dateien oder das Neuordnen von Teilen von Dateinamen. Es wird normalerweise nicht standardmäßig installiert, aber Sie können den entsprechenden Befehl unten verwenden, um mmv mit dem Paketmanager Ihres Systems zu installieren.
Ubuntu, Debian und Linux Mint:
$ sudo apt install mmv
Fedora, AlmaLinux, CentOS und RHEL:
$ sudo dnf install mmv
Arch Linux und Manjaro (Installation von AUR):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
-n
in Ihren Befehlen mmv
, wenn Sie eine Vorschau der Änderungen anzeigen möchten, bevor Sie sie vornehmen.Beispiel 1. Ändern Sie die Erweiterung aller .jpeg
-Dateien in .jpg
.
$ mmv '*.jpeg' '#1.jpg'
Beispiel 2. Ändern Sie alle Dateinamen in Kleinbuchstaben.
$ mmv '*' '#l1'
Beispiel 3. Ändern Sie alle Dateinamen in Großbuchstaben.
$ mmv '*' '#u1'
Beispiel 4. Teile eines Dateinamens neu anordnen. Dieser Befehl ändert Musikdateien mit dem Muster Song-Artist.mp3
in Artist-Song.mp3
.
$ mmv '*-*.mp3' '#2-#1.mp3'
Beispiel 5. Ersetzen Sie das erste Vorkommen von „IMG“ durch „Vacation“ in allen Dateinamen.
$ mmv '*IMG*' '#1Vacation#2'
Beispiel 6. Fügen Sie jedem Dateinamen ein Präfix hinzu. Dieser Befehl wird jeder .log
-Datei „backup_“ voranstellen.
$ mmv '*.log' 'backup_#1.log'
Beispiel 7. Fügen Sie jedem Dateinamen ein Suffix hinzu. Dieser Befehl hängt „_backup“ an jede .log
-Datei an.
$ mmv '*.log' '#1.log_backup'
Beispiel 8. Entfernen Sie das Präfix „IMG_“ aus allen .jpg
-Dateien.
$ mmv 'IMG_*.jpg' '#1'
Beispiel 9. Entfernen Sie das Suffix „_old“ aus allen Dateien.
$ mmv '*_old' '#1'
Bulk-Umbenennen von Dateien über GUI
Wenn die Befehlszeile nicht wirklich Ihr Ding ist, ist es möglich, mehrere Dateien gleichzeitig über GUI umzubenennen. Eines der besten Tools für diese Aufgabe ist die mit Thunar gelieferte Anwendung zum Umbenennen von Massen.
Thunar ist der Standard-Dateibrowser für Xfce, aber Sie können ihn unabhängig von der verwendeten Desktop-Umgebung installieren. Wenn Sie bereits Xfce oder Thunar verwenden, ist Bulk Rename bereits Teil Ihres Systems. Andernfalls verwenden Sie den entsprechenden Befehl unten, um es mit dem Paketmanager Ihres Systems zu installieren.
Ubuntu, Debian und Linux Mint:
$ sudo apt install thunar
Fedora, AlmaLinux, CentOS und RHEL:
$ sudo dnf install thunar
Arch Linux und Manjaro:
$ sudo pacman -S thunar
Schritt 1. Suchen Sie nach der Installation von Thunar nach dem Bulk Rename Utility und öffnen Sie es.
Schritt 2. Klicken Sie auf das Pluszeichen, um Dateien hinzuzufügen, die Sie umbenennen möchten.
Schritt 3. Wählen Sie aus der Liste der Optionen, was Sie mit den Dateien machen möchten. Sie können sie alle in Groß- oder Kleinbuchstaben ändern, Datum und Uhrzeit hinzufügen, Text an einer bestimmten Position einfügen, automatische Nummerierung hinzufügen, Zeichen ersetzen oder bestimmte Muster in den Dateinamen suchen und ersetzen. Im folgenden Beispiel haben wir an alle unsere Dateien die Dateierweiterung .txt
angehängt.
Schritt 4. Wenn Sie mit den in der Vorschau angezeigten Namensänderungen in der Spalte „Neuer Name“ zufrieden sind, klicken Sie auf „Dateien umbenennen“, um die Massenbenennung durchzuführen.
Umbenennen mehrerer Dateien in WSL
Wenn Sie das Windows-Subsystem für Linux verwenden, funktionieren einige der oben genannten Befehle nicht, insbesondere solche, bei denen Dateien in Klein- oder Großbuchstaben geändert werden. Windows unterscheidet nicht zwischen Groß- und Kleinschreibung und betrachtet daher File.txt
, file.txt
und FILE.txt
als dieselbe Datei.
Sie erhalten einfach eine Fehlermeldung, dass die Datei bereits vorhanden ist, wenn Sie versuchen, FILE.txt
in file.txt
umzubenennen. Verwenden Sie eines der folgenden Beispiele, um dieses Problem zu vermeiden.
Beispiel 1. Ändern Sie die Großbuchstabenerweiterung .JPG
in Kleinbuchstaben .jpg
für alle Dateien (mit Standarddienstprogrammen).
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
Beispiel 2. Ändern Sie die Großbuchstabenerweiterung .JPG
in Kleinbuchstaben .jpg
für alle Dateien (mit dem Dienstprogramm Umbenennen).
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
Beispiel 3. Ändern Sie die Großbuchstabenerweiterung .JPG
in Kleinbuchstaben .jpg
für alle Dateien (mit dem mmv-Dienstprogramm).
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
Beispiel 4. Ändern Sie alle Dateinamen in Kleinbuchstaben (mit Standarddienstprogrammen).
$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done
Beispiel 5. Ändern Sie alle Dateinamen in Kleinbuchstaben (mit dem mmv-Dienstprogramm).
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
Es ist möglich, Standard-Bash-Dienstprogramme für alle Ihre Massenbenennungen unter Linux zu verwenden, aber die Umbenennungs- und mmv-Tools machen es viel einfacher. Wir können auch Thunars Bulk Rename-Anwendung verwenden, wenn wir die GUI lieber über die Befehlszeile verwenden möchten. Die Beispiele in diesem Handbuch decken eine Vielzahl von Umbenennungsszenarien ab und können leicht an andere Anforderungen angepasst werden.