• Allgemein
  • Umbenennen mehrerer Dateien unter Linux: Eine umfassende Anleitung

Umbenennen mehrerer Dateien unter Linux: Eine umfassende Anleitung

Verwendung von mv zum Umbenennen mehrerer Dateien

Als erstes Tool, das du zum Umbenennen mehrerer Dateien unter Linux verwenden kannst, stellen wir dir mv vor, einen vielseitigen Befehl, der sowohl zum Verschieben als auch zum Umbenennen von Dateien dient.

Syntax

Die Syntax zum Umbenennen mehrerer Dateien mit mv lautet wie folgt:

mv alte_datei1 neue_datei1 alte_datei2 neue_datei2 ...

Du kannst beliebig viele Dateienpaare angeben, wobei jedes Paar aus einer alten Datei und einer neuen Datei besteht.

Beispiele

Einzelne Dateien umbenennen:

Diese Befehle benennen einzelne Dateien um:

mv alte_datei neue_datei

Mehrere Dateien umbenennen:

Du kannst auch mehrere Dateien gleichzeitig umbenennen:

mv alte_datei1 neue_datei1 alte_datei2 neue_datei2

Dateien in Groß- oder Kleinbuchstaben umbenennen:

Um Dateien in Groß- oder Kleinbuchstaben umzubenennen, verwende die folgenden Befehle:

mv alte_datei NEUE_DATEI
mv alte_datei neue_datei

Optionen

mv bietet verschiedene Optionen, die die Umbenennungseinstellungen anpassen:

  • -i: Interaktiver Modus, der zur Bestätigung vor dem Überschreiben vorhandener Dateien auffordert
  • -f: Erzwinge das Überschreiben vorhandener Dateien ohne Aufforderung
  • -v: Ausführliche Ausgabe, die den Fortschritt der Umbenennung anzeigt
  • –: Trenne die Optionsliste von den Zieldateien

Vorsichtsmaßnahmen

Beim Umbenennen mehrerer Dateien mit mv sind folgende Vorsichtsmaßnahmen zu beachten:

  • Überprüfung der Zieldateien: Prüfe sorgfältig, ob die neuen Dateinamen korrekt sind, bevor du den Befehl ausführst.
  • Dateikonflikte vermeiden: Vermeide es, mehrere Dateien mit demselben neuen Dateinamen zu benennen.
  • Verlorene Daten: Wenn du vorhandene Dateien überschreibst, gehen die ursprünglichen Daten verloren.

Regelmäßige Ausdrücke für komplexe Umbenennvorgänge

Regelmäßige Ausdrücke (Regex) sind ein leistungsstarkes Werkzeug zum Suchen und Manipulieren von Text, einschließlich Dateinamen. Sie ermöglichen dir komplexe Umbenennvorgänge, die mit einfachen Befehlen wie mv nicht möglich sind.

Verwendung von Regex mit rename

Das Kommandozeilenwerkzeug rename ist speziell für das Umbenennen von Dateien unter Verwendung von Regex entwickelt. Es unterstützt eine umfassende Syntax zur Übereinstimmung von Mustern und zum Ersetzen von Text.

Syntax

Die grundlegende Syntax von rename bei Verwendung von Regex lautet:

rename 's/Suchmuster/Ersatzmuster/g' alte_Datei neue_Datei
  • s/: Beginnt das Such- und Ersetzungsmuster.
  • Suchmuster: Das zu suchende Muster im Dateinamen.
  • Ersatzmuster: Der Text, durch den das Suchmuster ersetzt werden soll.
  • g: (optional) Gibt an, dass das Suchmuster global ersetzt werden soll.

Beispiele

Betrachte die folgenden Beispiele:

  • Umbenennen von Dateien von "image.jpg" zu "image_renamed.jpg":
rename 's/image\.jpg/image_renamed\.jpg/g' *.jpg
  • Ersetzen von Leerzeichen durch Unterstriche:
rename 's/ /_/g' *.txt
  • Umbenennen von Dateien mit einem bestimmten Präfix:
rename 's/^name_(.*)\.txt/$1\.txt/g' name_*.txt

Sonderzeichen

Regex verwendet Sonderzeichen, um bestimmte Muster abzugleichen. Einige häufige Sonderzeichen sind:

  • .*: Alle Zeichen
  • ^: Beginn einer Zeile
  • $: Ende einer Zeile
  • (): Gruppierung

Vorsichtsmaßnahmen

Bei der Verwendung von Regex zum Umbenennen mehrerer Dateien ist Vorsicht geboten. Stelle sicher, dass du die Muster, die du verwendest, vollständig verstehst, um versehentliches Überschreiben von Dateien zu vermeiden.

Umbenennen mehrerer Dateien mit einem Skript

Wenn du eine große Anzahl von Dateien umbenennen musst oder komplexe Umbenennvorgänge durchführen möchtest, kann ein Skript eine effektive Lösung sein. Skripte ermöglichen dir, eine Reihe von Befehlen zu automatisieren, was Zeit und Aufwand spart.

Grundlagen des Umbenennens mit Skripten

Um ein Skript zum Umbenennen von Dateien zu erstellen, kannst du eine Skriptsprache wie Bash, Python oder Perl verwenden. Das folgende Beispiel zeigt ein einfaches Bash-Skript:

#!/bin/bash

# Erhalte eine Liste der Dateien im aktuellen Verzeichnis
dateien=$(ls)

# Durchlaufe jede Datei in der Liste
for datei in $dateien; do

  # Umbenennen der Datei mit mv
  mv "$datei" "neue_datei_$datei"
done

Dieses Skript durchläuft alle Dateien im aktuellen Verzeichnis und fügt dem Dateinamen "neue_datei_" hinzu.

Verwendung regulärer Ausdrücke

Reguläre Ausdrücke können verwendet werden, um komplexe Umbenennungsmuster anzupassen. In Bash kannst du die Option -r des Befehls rename verwenden, um reguläre Ausdrücke zu aktivieren.

rename -r 's/alt/neu/g' *.txt

Dieser Befehl benennt alle Dateien mit der Erweiterung ".txt" um und ersetzt alle Vorkommen von "alt" durch "neu".

Skripterstellung

Wenn du komplexere Umbenennvorgänge durchführen musst, kannst du ein vollständiges Skript schreiben. Dies kann nützlich sein, wenn du benutzerdefinierte Umbenennungslogik, Fehlerbehandlung oder die Möglichkeit zum Umbenennen von Dateien in Unterverzeichnissen benötigst.

Ein Beispiel für ein Python-Skript, das Dateien basierend auf ihren Metadaten umbenennt:

import os
import re

# Hole eine Liste der Dateien im aktuellen Verzeichnis
dateien = os.listdir(".")

# Durchlaufe jede Datei
for datei in dateien:

  # Hole die Metadaten der Datei
  meta = os.stat(datei)

  # Umbenennen der Datei mit dem Erstellungsdatum
  os.rename(
      datei,
      "{}_{}.txt".format(meta.st_ctime, datei)
  )

Dieses Skript benennt die Dateien im aktuellen Verzeichnis mit ihrem Erstellungsdatum, formatiert als UNIX-Zeitstempel, um.

Tipps für das Umbenennen mit Skripten

  • Teste dein Skript immer gründlich, bevor du es auf eine große Anzahl von Dateien anwendest.
  • Verwende den Parameter --dry-run, um das Umbenennen zu simulieren, ohne die tatsächlichen Dateien zu ändern.
  • Berücksichtige die Verwendung von xargs oder parallelen Prozessen, um die Umbenennung zu beschleunigen.
  • Dokumentiere dein Skript ausführlich, damit du oder andere es in Zukunft verstehen können.

Massenumbenennung von Dateien in Verzeichnissen

Verwendung der find-Befehlszeile

Der Befehl find ist ein leistungsstarkes Tool zum Auffinden und Umbenennen von Dateien in Verzeichnissen. Hier ein Beispiel, um alle Dateien mit der Endung .txt in einem Verzeichnis und seinen Unterverzeichnissen in .doc umzubenennen:

find . -type f -name "*.txt" -exec rename "s/.txt/.doc/" {} \;

Globale Muster verwenden

Globale Muster können auch zum Umbenennen mehrerer Dateien in einem Verzeichnis verwendet werden. Beispielsweise wird folgender Befehl alle Dateien mit dem Präfix "Bild" in "Foto" umbenennen:

rename -v "s/Bild/Foto/" Bild*

Skripte schreiben

Für komplexere Umbenennvorgänge kannst du Skripte in Sprachen wie Bash, Python oder Perl schreiben. Hier ist ein Bash-Skript, das alle Dateien in einem Verzeichnis in Großbuchstaben umbenennt:

#!/bin/bash

for file in *; do
  mv "$file" "$(echo "$file" | tr '[:lower:]' '[:upper:]')"
done

Massenumbenennung mit Drittanbieter-Tools

Wenn die integrierten Befehlszeilentools nicht ausreichen, gibt es Drittanbieter-Tools, die dir bei der Massenumbenennung von Dateien helfen können.

  • FileBot: Ein Java-basiertes Umbenennungstool, das Dateinamen basierend auf Metadaten, Dateinamen oder benutzerdefinierten Regeln generieren kann.
  • Bulk Rename Utility: Ein Windows-Programm, das eine Vielzahl von Umbenennfunktionen bietet, darunter das Einfügen von Text, das Ändern von Groß-/Kleinschreibung und das Entfernen von Leerzeichen.
  • Advanced Renamer: Ein kostenpflichtiges Tool für Windows, Mac und Linux, das erweiterte Umbenennoptionen, einschließlich Batch-Umbenennung und regulärer Ausdrücke, bietet.

Umbenennen von Dateien basierend auf Metadaten oder Dateinamen

Neben der Verwendung von regulären Ausdrücken kannst du auch Metadaten oder den Dateinamen selbst verwenden, um mehrere Dateien umzubenennen.

Umbenennen von Dateien basierend auf Metadaten

Metadaten sind zusätzliche Informationen, die zu einer Datei gespeichert werden, wie z. B. Erstellungsdatum, Autor oder Dateistatus. Du kannst Metadaten mithilfe des Befehls exiftool abrufen und verwenden.

Beispiel:

exiftool '-filename<CreateDate' -d %Y%m%d-%H%M%S_%%-c.%%e' *.jpg

Dieser Befehl benennt alle JPEG-Dateien im aktuellen Verzeichnis unter Verwendung ihres Erstellungsdatums im Format JJJJMMTT-HHMMSS_%%-c.%%e um.

Umbenennen von Dateien basierend auf dem Dateinamen

Du kannst auch einen Teil des Dateinamens selbst verwenden, um eine neue Datei zu generieren.

Beispiel:

rename 's/^(\w+)\.\w+$/$1_renamed.jpg/' *.jpg

Dieser Befehl fügt allen JPEG-Dateien im aktuellen Verzeichnis das Suffix "_renamed" hinzu.

Umbenennen von Dateien basierend auf mehreren Kriterien

Du kannst eine Kombination aus regulären Ausdrücken, Metadaten und Dateinamen verwenden, um komplexe Umbenennungen durchzuführen.

Beispiel:

exiftool '-filename<CreateDate' -d %Y%m%d-%H%M%S_ | rename -v 's/-(.+?)\.jpg$/_$1_renamed.jpg/'

Dieser Befehl kombiniert das obige Erstellungsdatum mit dem regulären Ausdruck, um alle JPEG-Dateien im aktuellen Verzeichnis mit einem Zeitstempel und einem Suffix umzubenennen.

Wichtige Hinweise

  • Vorsicht beim Umbenennen von Dateien basierend auf Metadaten, da diese möglicherweise nicht für alle Dateien verfügbar sind.
  • Verwende Anführungszeichen, um Leerzeichen in den Umbenennungsbefehlen zu escapen.
  • Teste Umbenennungsvorgänge an einer Kopie der Dateien, bevor du sie auf die Originale anwendest.
  • Erwäge die Verwendung eines Skripts, wenn du komplexe Umbenennungen auf eine große Anzahl von Dateien anwenden möchtest.

Umbenennen von Dateien mit speziellen Zeichen oder Leerzeichen

Beim Umbenennen von Dateien stößt du möglicherweise auf Dateien mit speziellen Zeichen oder Leerzeichen in ihren Namen. Diese können die Verwendung herkömmlicher Befehle erschweren, da sie als Trennzeichen interpretiert werden. Um diese Herausforderung zu meistern, stehen dir mehrere Optionen zur Verfügung:

Escapezeichen

Du kannst Escapezeichen verwenden, um spezielle Zeichen oder Leerzeichen in Dateinamen zu schützen. Das am häufigsten verwendete Escapezeichen ist der Backslash \. Durch dessen Platzierung vor dem Sonderzeichen oder Leerzeichen wird es als Teil des Dateinamens interpretiert, anstatt als Trennzeichen.

mv 'Datei mit Leerzeichen.txt' 'Datei\ mit Leerzeichen.txt'

Anführungszeichen

Eine weitere Möglichkeit, Sonderzeichen oder Leerzeichen zu schützen, ist die Verwendung von Anführungszeichen. Dies kann vor allem bei komplexeren Umbenennungen nützlich sein, bei denen mehrere spezielle Zeichen beteiligt sind.

mv "Datei mit Sonderzeichen!@#$%^&*.txt" "Umbenannte Datei.txt"

Find and Replace

Wenn du mehrere Dateien mit ähnlichen Sonderzeichen umbenennen musst, kannst du den Befehl find verwenden, um sie zu suchen und zu ersetzen. Mit der Option -exec kannst du einen Befehl ausführen, z. B. den Befehl mv, für jedes gefundene Ergebnis.

find . -name "*sonderzeichen*" -exec mv '{}' '{}_umbenannt' \;

Xargs

Eine weitere leistungsstarke Option ist die Verwendung des Befehls xargs. Dieser Befehl liest eine Liste von Dateien aus der Standardeingabe und führt einen angegebenen Befehl für jede Datei aus.

find . -name "*sonderzeichen*" | xargs -I{} mv {} {}_umbenannt

Zusätzliche Tipps

  • Wenn du Dateien mit Leerzeichen in ihren Namen umbenennst, achte darauf, das gesamte Verzeichnis im Zielpfad anzugeben.
  • Bei komplexen Umbenennvorgängen ist es hilfreich, die Befehle zuerst in einer Testumgebung auszuführen.
  • Vermeide es, Sonderzeichen oder Leerzeichen in Dateinamen zu verwenden, wenn möglich.

Umbenennen von Dateien interaktiv mit vi oder Vim

Wenn du mit dem visuellen Ansatz des Umbenennens vertraut bist, kannst du den Texteditor vi oder Vim verwenden, um mehrere Dateien interaktiv umzubenennen.

Vorgehensweise mit vi oder Vim

  1. Öffne ein Terminalfenster und navigiere zu dem Verzeichnis, das die Dateien enthält, die du umbenennen möchtest.

  2. Führe den folgenden Befehl aus, um alle Dateien im Verzeichnis im vi-Editor zu öffnen:

vi *
  1. Drücke im vi-Editor die Esc-Taste, um in den Befehlsmodus zu gelangen.

  2. Gebe den folgenden Befehl ein, um die Ansicht auf die neueste erstellte Datei zu beschränken:

:bn
  1. Gebe den folgenden Befehl ein, um eine Markierung für die ersten N Zeichen des Dateinamens zu setzen (wobei N die Anzahl der Zeichen angibt, die du umbenennen möchtest):
msN

Zum Beispiel, um die ersten fünf Zeichen des Dateinamens zu markieren, würdest du Folgendes eingeben:

ms5
  1. Drücke die Escape-Taste, um zum Befehlsmodus zurückzukehren.

  2. Gebe den folgenden Befehl ein, um den markierten Teil des Dateinamens durch den neuen Dateinamen zu ersetzen:

:s/alter_name/neuer_name/g

Zum Beispiel, um den Dateinamen "test.txt" in "neuer_name.txt" zu ändern, würdest du Folgendes eingeben:

:s/test.txt/neuer_name.txt/g
  1. Drücke die Enter-Taste, um die Änderung zu übernehmen.

  2. Drücke zweimal n, um die Änderung auf die nächste Datei anzuwenden.

  3. Wiederhole die Schritte 6 bis 9, bis du alle Dateien umbenannt hast.

  4. Wenn du fertig bist, drücke Shift + Z + Q, um den vi-Editor zu verlassen.

Umgang mit Konflikten

Wenn du versuchst, eine Datei umzubenennen, die bereits existiert, wird vi oder Vim dich auffordern, den Konflikt zu beheben. Du kannst den Konflikt auf folgende Weise lösen:

  • y (Ja): Überschreibe die vorhandene Datei.
  • n (Nein): Ändere den Dateinamen nicht.
  • r (Umbenennen): Gib einen neuen Dateinamen ein.
  • q (Abbrechen): Brich den Umbenennvorgang ab.

Vorteile der Verwendung von vi oder Vim

  • Interaktive Bearbeitung: Du kannst jeden Dateinamen einzeln bearbeiten, bevor du den Umbenennvorgang bestätigst.
  • Regelmäßige Ausdrücke: Du kannst reguläre Ausdrücke verwenden, um komplexe Umbenennvorgänge durchzuführen.
  • Automatisierung: Du kannst ein vi-Skript schreiben, um den Umbenennvorgang zu automatisieren.

Umgang mit Konflikten bei der Umbenennung

Beim Umbenennen mehrerer Dateien besteht immer das Risiko von Konflikten. Diese können auftreten, wenn du versuchst, zwei oder mehr Dateien mit demselben Namen in demselben Verzeichnis zu benennen.

Vorgehen bei Konflikten

Wenn du auf einen Konflikt stößt, kannst du Folgendes tun:

  • Überprüfe die Dateinamen: Stelle sicher, dass die Dateinamen eindeutig sind und sich nicht ähneln.
  • Verwende Inkrementnummerierung: Füge dem Dateinamen eine Zahl hinzu, um sie eindeutig zu machen, z. B. datei_1.txt, datei_2.txt.
  • Nutze Zeitstempel: Füge dem Dateinamen einen Zeitstempel hinzu, um die Reihenfolge der Umbenennung zu verfolgen, z. B. datei_20230208_1200.txt.
  • Verwende Unterverzeichnisse: Erstelle Unterverzeichnisse, um Dateien mit ähnlichen Namen zu organisieren und Konflikte zu vermeiden.

Häufige Fallstricke

  • Leere Dateinamen: Vermeide es, Dateien mit leeren Namen zu benennen, da dies zu Konflikten führen kann.
  • Sonderzeichen: Vermeide Sonderzeichen wie *, ? oder # in Dateinamen, da diese bei Umbenennungsoperationen Probleme verursachen können.
  • Groß-/Kleinschreibung: Achte auf Groß- und Kleinschreibung bei Dateinamen, da diese als eindeutige Namen behandelt werden.

Befehle zur Konfliktlösung

Je nach verwendeter Methode kannst du dich auf die folgenden Befehle verlassen, um Konflikte bei der Umbenennung zu lösen:

  • mv: Verwenden der Option -i zum interaktiven Umbenennen und Bestätigen von Überschreibungen.
  • rename: Verwendung der Option -n für eine Trockenausführung und zeigt mögliche Konflikte an, ohne sie umzubenennen.
  • perl rename: Verwendung regulärer Ausdrücke, um Konflikte basierend auf komplexeren Mustern aufzulösen.

Tipps zur Konfliktvermeidung

Um Konflikte von vornherein zu vermeiden, folge diesen Tipps:

  • Verwende eindeutige und beschreibende Dateinamen.
  • Organisiere Dateien in Unterverzeichnissen mit einer logischen Struktur.
  • Überprüfe vor dem Umbenennen sorgfältig die Dateinamen.

Umbenennen von Dateien in anderen Sprachen oder mit anderer Codierung

Manchmal hast du es mit Dateien zu tun, die in anderen Sprachen oder mit einer anderen Codierung benannt sind. Dies kann die Arbeit mit ihnen erschweren, besonders wenn du sie in Skripten oder Programmen verwenden möchtest.

Umgang mit Dateien in anderen Sprachen

Wenn du Dateien mit nicht-lateinischen Zeichen hast, musst du zunächst sicherstellen, dass dein Terminal die richtigen Schriftarten installiert hat. Andernfalls werden die Zeichen möglicherweise nicht korrekt angezeigt.

Für Ubuntu kannst du das Paket ttf-ubuntu-fonts-extra installieren. Für andere Distributionen kannst du nach ähnlichen Paketen suchen.

Sobald die Schriftarten installiert sind, kannst du die Dateien wie gewohnt umbenennen. Verwende jedoch für Dateinamen UTF-8-Codierung, um Kompatibilitätsprobleme zu vermeiden.

Umgang mit Dateien mit anderer Codierung

Manchmal sind Dateien in einer anderen Codierung als UTF-8 gespeichert. Dies kann Probleme beim Umbenennen oder Bearbeiten der Dateien verursachen.

Um die Codierung einer Datei zu überprüfen, kannst du den Befehl file verwenden:

file <dateiname>

Wenn die Datei nicht in UTF-8 codiert ist, musst du sie konvertieren. Dies kannst du mit dem Befehl iconv tun:

iconv -f <ursprüngliche_codierung> -t utf-8 <dateiname> -o <neuer_dateiname>

Denke daran, die ursprüngliche Codierung durch die tatsächliche Codierung der Datei zu ersetzen.

Umbenennen von Dateien mit speziellen Zeichen

Wenn du Dateien mit Sonderzeichen wie Leerzeichen, Tabulatoren oder Zeilenumbrüchen hast, musst du diese beim Umbenennen möglicherweise escapen. Dies kannst du mit dem Escape-Zeichen \ tun.

Beispielsweise würdest du eine Datei mit dem Namen "Mein Dokument.txt" wie folgt umbenennen:

mv "Mein Dokument.txt" "Mein\ Dokument.txt"

Fazit

Das Umbenennen von Dateien in anderen Sprachen oder mit anderer Codierung kann eine Herausforderung sein, ist aber mit den richtigen Werkzeugen und Techniken möglich. Denke daran, die richtigen Schriftarten zu installieren, die Codierung der Dateien zu überprüfen und gegebenenfalls zu konvertieren und Sonderzeichen zu escapen.

Automatisierung der Umbenennung mehrerer Dateien mit Cron

Cron ist ein Dienstprogramm unter Linux, mit dem du Aufgaben zu bestimmten Zeitpunkten oder in regelmäßigen Abständen automatisieren kannst. Du kannst Cron verwenden, um die Umbenennung mehrerer Dateien zu automatisieren, sodass du diese Aufgabe nicht manuell ausführen musst.

Einrichtung eines Cron-Jobs

Um einen Cron-Job einzurichten, erstelle eine neue Datei in /etc/crontab mit deinem bevorzugten Texteditor (z. B. nano /etc/crontab). Füge der Datei die folgende Zeile hinzu:

* * * * * command

In dieser Zeile steht:

  • * * * * *: Führt den Befehl jede Minute aus
  • command: Der Befehl, der ausgeführt werden soll (z. B. ein Umbenennungsskript)

Umbenennungsskript

Erstelle ein Skript, um die Umbenennung durchzuführen. Das Skript sollte die folgenden Schritte enthalten:

  1. Verzeichnis mit den umzubenennenden Dateien auflisten
  2. Regelmäßige Ausdrücke oder andere Kriterien zum Umbenennen der Dateien verwenden
  3. Dateien umbenennen

Cron-Job-Befehl

Füge den folgenden Befehl in die Cron-Job-Datei ein, um das Umbenennungsskript auszuführen:

/path/to/your_script.sh

Ersetze /path/to/your_script.sh durch den tatsächlichen Pfad zu deinem Umbenennungsskript.

Beispiel

Unten findest du ein Beispiel für einen Cron-Job, der jede Minute ein Umbenennungsskript für alle Dateien im Verzeichnis /home/user/files ausführt, die mit .txt enden:

* * * * * /home/user/rename_files.sh /home/user/files/*.txt

Tipps

  • Regelmäßige Ausdrücke verwenden: Regelmäßige Ausdrücke ermöglichen dir die komplexe Umbenennung von Dateien.
  • Automatische Ausführung: Cron führt den Umbenennungsjob automatisch aus, sodass du dich um nichts kümmern musst.
  • Zeitplanung: Du kannst den Cron-Job so planen, dass er zu bestimmten Zeiten oder in regelmäßigen Abständen ausgeführt wird.
  • Fehlerbehandlung: Stelle sicher, dass dein Umbenennungsskript Fehler behandelt, um Probleme zu vermeiden.
  • Vorsicht: Cron kann Jobs ohne deine Bestätigung ausführen. Überprüfe den Cron-Job sorgfältig, bevor du ihn aktivierst.