In einem Dateisystem mit Dateinamen in UTF-8 habe ich eine Datei mit einem falschen Namen. Es wird angezeigt als :, D�sinstaller
tatsä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.utf8
die Datei jedoch nicht angezeigt, und ich muss festlegen LANG=C
(oder en_US
oder ''
), 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, convmv
ob dies notwendig ist. Vielen Dank.
convmv
, Dateinamen in utf-8 umzuwandeln?