invalid encoding
Claus Behl
claus at bempf.de
Son Jan 22 21:52:09 GMT 2006
Reinhard Müller schrieb:
>Am Sonntag, den 22.01.2006, 12:58 +0100 schrieb Claus Behl:
>
>
>>Gibt es eine Möglichkeit nach Files zu suchen, deren Filenamen nicht in
>>utf-8 codiert sind.
>>
>>
>
>Klaro :-)
>
>Terminal aufmachen, in das Verzeichnis wechseln, innerhalb dessen du
>suchen willst (durchsucht auch Unterverzeichnisse), und dann
>
>find . | ( while read x; do echo $(basename $x) | iconv --from-code=utf-8 --to-code=utf-8 > /dev/null 2>&1 || echo $x; done )
>
>lg,
>Reinhard
>
>
Vielen Dank für die schnelle Antwort.
Ich hatte gehofft, dass es einen eleganten Einzeiler gibt.
hm, das Wunder wird von iconv vollbracht.
Funktioniert das jetzt so, dass find alle Dateinamen im Verzeichnis (und
Unterverzeichnisse) an iconv weitergibt.
iconv versucht, diese Datei von utf-8 nach utf-8 umzuwandeln und die
Ausgabe-Datei ins Nirwana schickt.
Immer dann, wenns nicht funktioniert, weil die Datei nicht utf-8 codiert
ist, wird eine Fehlermeldung mit dem Dateinamen ausgegeben. So bekomme
ich eine Liste aller Dateien, die nicht utf-8 codiert sind.
Seh ich das so richtig?
Vielleicht hätte ich mal sagen sollen, warum mich das Problem plagt. Ich
wollte ein backup meiner alten Daten machen.
Leider muckt das Brennprogramm, wenn es über eine Datei mit (invalid
encoding) stolpert.
Was ich nicht verstehe ist, dass ich eine Unzahl Fehlermeldungen derart
bekam:
basename: zu viele Argumente
Ich hab beschlossen diese Fehler zu ignorieren, mit
find . | ( while read x; do echo $(basename $x 2>/dev/null) | iconv
--from-code=utf-8 --to-code=utf-8 > /dev/null 2>&1 || echo $x >>
problem_dateien.txt; done )
Aber ich wäre an einer Erklärung sehr interessiert.
Claus