In un file system in cui i nomi dei file sono in UTF-8, ho un file con un nome errato; viene visualizzato come :, D�sinstaller
nome effettivo secondo zsh D$'\351'sinstaller
:, Latin1 per Désinstaller
, esso stesso una barbarie francese per "disinstallazione". Zsh non lo abbinerebbe, ma lo abbinerebbe [[ $file =~ '^.*$' ]]
a un sussulto: *
questo è il comportamento che mi aspetto.
Ora mi aspetto ancora di trovarlo durante l'esecuzione find . -name '*'
, infatti, non mi aspetterei mai che un nome di file fallisca questo test. Tuttavia, con LANG=en_US.utf8
, il file non viene visualizzato e devo impostare LANG=C
(o en_US
, o ''
) affinché funzioni.
Domanda: qual è l'implementazione dietro e come avrei potuto prevedere tale risultato?
Informazioni: Arch Linux 3.14.37-1-lts, find (GNU findutils) 4.4.2
[[ $file =~ '^.*$' ]]
a utilizzare recode
il nome del file, ma ora esaminerò convmv
se necessario. Grazie.
convmv
di convertire i nomi dei file in utf-8?