Springe zum Inhalt

Falsch dargestellt Umlaute im Dateinamen unter Linux korrigieren

Beim Benutzen von unterschiedlichen Filesystemen als Ablageort für Dateien von unterschiedlichen Betriebssystemen kann es vorkommen, dass Dateinamen mit Umlauten oder anderen Sonderzeichen nicht auf allen anderen Betriebssystemen gleich aussehen. Dies liegt einerseits daran, dass bei der Erstellung der Datei evtl. falsche Zeichensätze für das Dateisystem vorgegeben worden sind und das jeweilige andere Betriebssystem die Zeichen im Dateinamen dann falsch interpretiert. Hinzu kommen noch Netzwerkclients, die evtl. die erforderliche Konvertierung nicht ordnungsgemäß durchführen und so Dateinamen mit Sonderzeichen falsch auf dem Zielsystem erstellen.

Eine oft anzutreffende Variante beim Zusammenspiel von Windows und Linux sind Dateinamen, die von Windows mit dem Zeichensatz ISO-8859-1 oder ISO-8859-15 kodiert worden sind, von Linux aber als UTF-8 erwartet werden.

Bei der Auflistung solch falsch kodierter Dateinamen erhält man dann z.B. folgende Namen: Brief f�r Foobar.doc.

Ein Anschließendes Öffnen des Dokuments erzeugt in z.B. LibreOffice dann die Fehlermeldung Die Datei oder der Ordner Brief f�r Foobar.doc existiert nicht.

In der Linux-Shell kann man solche falsch benannten Dateien einfach umbenennen. In diesem Beispiel würde das mit folgendem Befehl geschehen:

mv Brief\ f?r\ Foobar.doc Brief\ für\ Foobar.doc

Anstelle der Sonderzeichen setzt man das Fragezeichen, welches als Maske für genau ein Zeichen steht. Wichtig ist die Maskierung von Leerzeichen mit einem vorgestellen umgekehrten Schrägstrich (Backslash). Alternativ zum Maskieren mit dem Backslash (auch Escapen genannt) können die beiden Dateinamen auch in Anführungszeichen (") eingefasst werden.

mv "Brief f?r Foobar.doc" "Brief für Foobar.doc"

Bei wenigen Dateien kann diese Umbenennung von Hand erfolgen. Was aber, wenn sehr viele Dateinamen zu korrigieren sind? Auch hier ist bereits ein geeignetes Linux-Utility vorhanden: convmv. Mit dem Befehl

convmv -f iso-8859-15 -t utf-8 --notest /verzeichnis/zu/den/dateien/

werden im angegeben Verzeichnis die Dateinamen vom Zeichensatz ISO-8859-15 in den Zeichensatz UTF-8 konvertiert. Mit dem Schalter -r kann diese Aufgabe auch gleich für alle darunterliegenden Verzeichnisse ausgeführt werden. Sollte das Utility nicht bereits auf dem Rechner installiert worden sein, kann es über Synaptic oder mit dem Befehl

sudo apt-get install convmv

installiert werden.

7 Gedanken zu „Falsch dargestellt Umlaute im Dateinamen unter Linux korrigieren

  1. Tronco Flipao

    Hallo,

    Ich hatte genau dieses Problem und konnte es dank Deinem Post mit convmv schnell lösen.

    Danke!

  2. Fragefix

    Was bedeutet "Schalter -r" ? (Mit dem man das für darunter liegende Verzeichnisse gleich miterledigen kann)

    1. Jens Tautenhahn

      -r bedeutet rekursiv. Mit -r bearbeitet convmv die Dateien in allen Unterverzeichnissen unterhalb des angegebenen Verzeichnisses.

      convmv -f iso-8859-15 -t utf-8 -r --notest /verzeichnis/zu/den/dateien/

      Mit -r wird hier alles unterhalb von /verzeichnis/zu/den/dateien bearbeitet.

  3. Fragefix

    Verstehe.
    Ist die Schreibweise egal ?
    --notest hab ich in anderen Fällen z.B. schon hinter dem Dateinamen gesehen, deshalb wusste ich anfänglich nicht wohin mit dem -r .

    1. Jens Tautenhahn

      Das kommt immer auf das jeweilige Programm an. Im allgemeinen gilt: "Programm Optionen Verzeichnisse/Dateien", kann aber wie gesagt auch anders sein. Die Man-Page von convmv verlangt "convmv [options] FILE(S) ... DIRECTORY(S)". Ein Blick in die Man-Page ist immer gut ;)

  4. Thomas

    Es ist ja schon ein Ding... seit Jahren quäle ich mich mit dem Verschieben von Dateien zwischen NTFS, SMB-Protokollen und Linux-Dateisystemen. Immer wieder habe ich mount Optionen geändert, Samba Configs angepasst und im schlimmsten Fall Dateien auf der Konsole umbenannt... das hat mich Jahre meines Lebens gekostet... um dann nach 15 Minuten Suchmaschine quälen, Deinen Beitrag zu finden. Daten hin und her kopiert, den Befehl abgesetzt, 3 Minuten die SSD gequält und... fertig. Alles richtig. Ö, Ä, Ü, ß usw. einfach wieder richtig.
    Ich bedanke mich vielmals! :-D

Kommentare sind geschlossen.