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.


Siehe auch