Dans un système de fichiers où les noms de fichiers sont en UTF-8, j'ai un fichier avec un nom erroné; il est affiché comme D�sinstaller
:, nom réel selon zsh D$'\351'sinstaller
:, Latin1 pour Désinstaller
, lui-même une barbarie française pour "désinstaller". Zsh ne le ferait pas correspondre [[ $file =~ '^.*$' ]]
mais le ferait avec un globbing *
- c'est le comportement que j'attends.
Maintenant, je m'attends toujours à le trouver lors de l'exécution find . -name '*'
- en fait, je ne m'attendrais jamais à ce qu'un nom de fichier échoue à ce test. Cependant, avec LANG=en_US.utf8
, le fichier ne pas apparaître, et je dois ensemble LANG=C
(ou en_US
, ou ''
) pour que cela fonctionne.
Question: Quelle est la mise en œuvre derrière et comment aurais-je pu prédire ce résultat?
Infos: Arch Linux 3.14.37-1-lts, find (GNU findutils) 4.4.2
[[ $file =~ '^.*$' ]]
ne pas utiliser recode
le nom de fichier, mais je vais maintenant vérifier convmv
si besoin est. Merci.
convmv
de convertir les noms de fichiers en utf-8?