In einem Dateisystem mit Dateinamen in UTF-8 habe ich eine Datei mit einem falschen Namen. Es wird angezeigt als :, D�sinstallertatsächlicher Name nach zsh D$'\351'sinstaller:, Latin1 für Désinstaller, selbst eine französische Barbarei für " uninstall ". Zsh würde es nicht mit, [[ $file =~ '^.*$' ]]aber mit einem Globbing vergleichen *- das ist das Verhalten, das ich erwarte.
Jetzt erwarte ich immer noch, dass ich es beim Ausführen finde find . -name '*'- tatsächlich würde ich nie erwarten, dass ein Dateiname diesen Test nicht besteht. Mit wird LANG=en_US.utf8die Datei jedoch nicht angezeigt, und ich muss festlegen LANG=C(oder en_USoder ''), dass sie funktioniert.
Frage: Welche Implementierung steckt dahinter und wie hätte ich dieses Ergebnis vorhersagen können?
Infos: Arch Linux 3.14.37-1-lts, find (GNU findutils) 4.4.2
[[ $file =~ '^.*$' ]]nicht zu verwenden recode, aber ich werde jetzt nachsehen, convmvob dies notwendig ist. Vielen Dank.
convmv, Dateinamen in utf-8 umzuwandeln?