Der Standardweg zur Umbenennung einer Datei in der
Unix /
Linux Welt
ist anhand des bash Kommandos mv (move): mv "verschiebt" eine Datei (unter einen anderen Namen oder Pfad).
Will man mehrere Dateien verschieben / umbenennen muss eine (bash) Funktion nach folgender generischer Struktur programmiert werden:
for sourceFile in ListOfFiles; do
mv -v "$sourceFile" "$targetFile"
done
ListOfFiles ist die Liste der Quelldateien (sourceFile ...).
Die Liste der entsprechenden Zieldateien ist (targetFile ...).
Beispielaufgabe: Oft wird die Quelldatei (sourceFile) durch Muster-Ersetzen in die Zieldatei (targetFile) überführt: Die Dateien
(File_01.txt ... File_0n.txt) werden in (Datei_01.txt ... Datei_0n.txt) umbenannt, indem
(Muster) File von (Muster) Datei ersetzt wird.
Das Skript bash_mv_files_arg1_arg2.sh
zeigt wie solche Funktion konkret programmiert werden kann. Es benötigt 2 Argumente:
Arg1: Muster zur Identifikation der Quelldateien (z.B. File)
Arg2: Die Umbenennung der Quelldateien erfolgt durch das Ersetzen mit dem Muster Arg2 (z.B. Datei)
Um die Beispielaufgabe oben (im laufenden Verzeichnis) durchzuführen, wird das Skript bash_mv_files_arg1_arg2.sh File Datei aufgerufen.
Das Kommando rename wird von
Linux unterstützt
- jedoch nicht von OSX.
Aber, auch für Linux muss rename explizit installiert werden (sudo apt-get install rename).
Der Vorteil von rename ist, dass es unmittelbar die Schritte vollführt, die im
Skript bash_mv_files_arg1_arg2.sh programmiert wurden.
rename -v 's/arg1/arg2/' ListOfFiles
arg1: Das zu ersetzende Muster (zur Identifikation der Quelldateien, z.B. File)
arg2: Die ersetzende Muster (zur Umbenennung der Quelldateien, z.B. Datei)
ListOfFiles: stellt die Gesamtmenge der Dateien, welche vom Vorgang berücksichtigt wird.
* bedeutet alle Dateien des laufenden Verzeichnisses,
*.pdf (alle Datei mit der Erweiterung "*.pdf"), etc.
Zum Beispiel:
rename -v 's/File/Datei/' *
Im Beispiel wird das Prüfen und ggf. Ersetzen (des Musters "File" durchs Muster "Datei") für alle Dateien im (laufenden) Verzeichnis durchgeführt (ListOfFiles=*).
Meistens werden nur Dateien mit einer bestimmten Endung berücksichtigt (z.B. ListOfFiles=*.pdf).
Weitere Infos zum Befehl rename entnehmen Sie z.B. folgenden Websites (Englisch):