BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Sonderzeichen in Dateinamen konvertieren

Hat man Dateien, welche unter einem anderen als dem auf dem eigenen Rechner verwendeten Zeichensatz erstellt wurden, so können zum Beispiel Umlaute falsch dargestellt werden. Diese können mit Hilfe von convmv konvertiert werden. Im FreeBSD Portbaum findet man convmv unter converters/convmv:

# cd /usr/ports/converters/convmv && make install clean

Im folgenden Beispiel wird ein Ordner mit einer Datei, welche Umlaute im Dateinamen enthält und auf einem System mit UTF8 erstellt wurde, auf einem System mit ISO8859-1 dargestellt:

# ls -al ÀöÌ
total 4
drwxr-xr-x  2 beat  wheel  512  9 Mai 20:51 ./
drwxrwxrwt  9 root  wheel  512  9 Mai 20:51 ../
-rw-r--r--  1 beat  wheel    0  9 Mai 20:49 morgÀ

Mit convmv können die Dateinamen nun konvertiert werden. Dazu wird zuerst ein Test vorgenommen, ob der Dateiname richtig konvertiert werden kann. Die -f Option gibt den ursprünglichen Zeichensatz, die -t Option den auf dem eigenen Rechner verwendeten Zeichensatz an. Mit der -r Option wird bei einem Ordner auch dessen Inhalt umgewandelt:

# convmv -r -f UTF-8 -t ISO8859-1 ÀöÌ
Starting a dry run without changes...
mv "ÀöÌ/morgÀ"      "ÀöÌ/morgä"
mv "./ÀöÌ"   "./äöü"
No changes to your files done. Use --notest to finally rename the files.

Ist der Test erfolgreich verlaufen, kann die Konvertierung mit --notest durchgeführt werden:

# convmv --notest  -r -f UTF-8 -t ISO8859-1 ÀöÌ
mv "ÀöÌ/morgÀ"      "ÀöÌ/morgä"
mv "./ÀöÌ"   "./äöü"
Ready!
# ls -al äöü/
total 4
drwxr-xr-x  2 beat  wheel  512  9 Mai 20:52 ./
drwxrwxrwt  9 root  wheel  512  9 Mai 20:52 ../
-rw-r--r--  1 beat  wheel    0  9 Mai 20:49 morgä

Auch lassen sich mit convmv Dateinamen in ausschliesslich Klein- oder Grossbuchstaben umwandeln:

# convmv --notest --upper klein
mv "./klein"    "./KLEIN"
Ready!
# convmv --notest --lower KLEIN 
mv "./KLEIN"    "./klein"
Ready!

Hat man Dateien, in deren Namen die Leerzeichen mit %20 kodiert wurden, können auch diese mit convmv umgewandelt werden:

#  convmv --notest --unescape dateinamen%20mit%20leerzeichen 
mv "./dateinamen%20mit%20leerzeichen"      "./dateinamen mit leerzeichen"
Ready!

Mehr Informationen zu convmv findet man in der Manpage convmv(1).

 Permalink