| FOTO | AUTO | EDV | AUDIO |

rename „Dateinamenteil“ „neu“ „Suchstring“
Die Zeile

rename SDIM  vos *.jpg
sucht alle .jpg Dateien und tauscht SDIM gegen vos. Der restliche Name bleibt gleich.

Wenn man alle Dateien und Verzeichnisse im aktuellen Verzeichnis in Kleinschreibung haben möchte, dann reicht dieser Befehl:

1

convmv –lower *

Wenn man aber alles in Großschreibung haben möchte, dann nimmt man die Option –upper anstatt –lower. Zur Vereinfachung bleibe ich in diesem kleinen HowTo bei der Kleinschreibung und gehe auf verschiedene Lösungswege ein.

Jedoch wird hier eine Liste mit den Änderungen ausgegeben. Somit kann man wunderbar verfolgen, wie das Tool bei der Umbenennung vorgeht.

Um die Umbenennung auch wirklich auszuführen, gibt man noch die Option –notest an:

1

convmv –lower –notest *

Wenn das Tool rekursiv durch alle Unterverzeichnisse arbeiten soll, dann fügen wir noch eine Option -r ein:

1

convmv -r –lower –notest *

Jetzt kommen wir mal zu einem Spezialfall. Wenn wir aber nur Dateinamen rekursiv durch alle Unterverzeichnisse umbenennen möchten, dann hilft uns in diesem Fall weitere Tools wie find und xargs:

1

find ./ -type f -print0 | xargs -r -0 convmv –lower

Erläuterung für find: ./ = In welchem Verzeichnis soll durchsucht werden (hier nur aktuelles) -type f = Nur Dateien sollen berücksichtigt werden -print0 = Jede Datei wird ein NULL-Zeichen als Trennzeichen angehängt, somit lassen sich die Dateiennamen bei der Übergabe an xargs besser auseinander halten

Erläuterung für xargs: -r = nicht ausführen, wenn keine weiteren Argumente übergeben werden können (= leer) -0 = NULL-Zeichen als Trennzeichen berücksichtigen.

Was ist mit dem schwierigsten Fall wie z.B. die Umbenennung von Verzeichnisnamen und das auch noch rekursiv durch alle Unterverzeichnisse? Nun man denkt einfach, dass man den o.g. Befehl -type f in -type d austauschen und ausführen kann. Spätestens bei der Umbenennung eines Unterverzeichnis dessen oberen Verzeichnisname sich geändert hat, würde das Vorhaben nur auf eine einzige Verzeichnistiefe beschränken. Alle darunterliegenden Verzeichnisse können somit nicht umbenannt werden.

Also verwenden wir ein etwas modifizierten Einzeiler und geben dem find die Option -depth mit, somit sollten die Verzeichnisse in korrekter Reihenfolge an convmv übergeben werden:

1

find ./ -depth -type d -print0 | xargs -r -0 convmv –lower –notest