Januar 1, 2022

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.

Die Beispiele in diesem Handbuch werden verwendet, um alle Dateien in Ihrem aktuellen Arbeitsverzeichnis umzubenennen. Die meisten dieser Befehle können leicht so optimiert werden, dass sie rekursiv arbeiten. Beachten Sie, dass einige Beispiele auch Verzeichnisse umbenennen.

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
Verwenden Sie die Option -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
Verwenden Sie die Option -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.

Öffnen des Bulk Rename Utility

Schritt 2. Klicken Sie auf das Pluszeichen, um Dateien hinzuzufügen, die Sie umbenennen möchten.

Hinzufügen einer Liste von Dateien zur Massenbenennungsanwendung

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.

Bulk Rename Tool zeigt die alten Namen und neue Dateinamen

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.

Beenden des Massenbenennungsauftrags

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.