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).