Zeichen via Kommandozeile in allen Dateinamen ändern (rekursiv)

2 Kommentare Autor: Jürgen (jdo)

Gestern bin ich auf ein Problem gestoßen, das sich unter Linux via Kommandozeile relativ einfach lösen ließ. Ich hatte in mehreren Unterverzeichnissen Dateinamen, in denen sich das Zeichen ä befand und ich mag keine Umlaute in Dateinamen. Heute ist das weniger tragisch, aber das ist so ein Ding aus alten Zeiten, in denen Umlaute und Sonderzeichen ein echtes Ärgernis waren.

Im Endeffekt ist es aber egal, welches Zeichen Du ändern willst. Vielleicht haben die Dateinamen bei Dir auch einen Unterstrich (_) und Du willst daraus ein Leerzeichen machen. Das Prinzip ist gleich.

Zeichen in allen Dateinamen ändern – find und mv

Zunächst einmal musst Du alle Dateinamen finden, in denen Das zu ersetzende Zeichen vorkommt. Dafür nehmen wir den Kommandozeilenbefehl find. Der Befehl find dürfte sowieso einer der besten Freunde von diversen Admins sein. Im Anschluss ändern wir den Dateinamen mit mv (move).

Mein Befehl, um alle Zeichen rekursiv von ä in ae zu ändern, sieht wie folgt aus. Bestimmt gibt es noch weitere Möglichkeiten, aber das hat bei mir funktioniert.

find ./ -depth -name '*ä*' -execdir bash -c 'mv -- "$1" "${1//ä/ae}"' bash {} \;

Die Lösung habe ich übrigens bei unix.stackexchange.com gefunden. Damit beweist sich wieder einmal, dass Du nicht alles wissen musst. Du musst nur wissen, wo Du die Lösung finden kannst.

Dateinamen mit ä finden

Du kannst das auch testen, indem Du ein paar Dateien und Unterverzeichnisse anlegst. Bevor Du gleich die Dateinamen änderst, probiert einfach den ersten Teil des Befehls aus, ob er auch sauber funktioniert. Bei mir sieht das zum Beispiel so aus.

Alle Dateinamen finden, die mein Zeichen enthalten

Alle Dateinamen finden, die mein Zeichen enthalten

Wie Du siehst, findet der Befehl auch die Datei im Unterverzeichnis Subdir. Nun führe ich den gesamten Befehl von weiter oben aus. Im Anschluss suche ich wieder mit find, aber diesmal nach ae. Die Dateinamen sollten alle entsprechend geändert sein.

Alle Zeichen sind von ä auf ae geändert

Alle Zeichen sind von ä auf ae geändert

Wie Du siehst, hat das funktioniert. Vielleicht sind Dir Umlaute egal, aber es ist eine gute Möglichkeit, Unterstriche, Bindestriche und was auch sonst aus vielen Dateinamen gleichzeitig zu bekommen.




 Alle Kommentare als Feed abonnieren

2 Kommentare zu “Zeichen via Kommandozeile in allen Dateinamen ändern (rekursiv)”

  1. David Wolski says:

    Hi Juergen,
    darf ich deine Aufmerksamkeit auf das Tool 'detox' richten:
    http://detox.sourceforge.net

    Ich mag deinen Blog und schaue immer wieder mal vorbei. Mach noch lange weiter damit!