Dalam sistem file di mana nama file berada di UTF-8, saya punya file dengan nama yang salah; itu ditampilkan sebagai D�sinstaller
:, nama aktual menurut zsh D$'\351'sinstaller
:, Latin1 untuk Désinstaller
, itu sendiri barbarisme Perancis untuk "uninstall." Zsh tidak akan cocok dengan itu [[ $file =~ '^.*$' ]]
tetapi akan mencocokkannya dengan globbing *
- ini adalah perilaku yang saya harapkan.
Sekarang saya masih berharap untuk menemukannya ketika menjalankan find . -name '*'
- sebenarnya, saya tidak akan pernah berharap nama file gagal tes ini. Namun, dengan LANG=en_US.utf8
, file tersebut tidak muncul, dan saya harus set LANG=C
(atau en_US
, atau ''
) untuk itu untuk bekerja.
Pertanyaan: Apa implementasi di belakang, dan bagaimana saya bisa memprediksi hasil itu?
Informasi: Arch Linux 3.14.37-1-lts, find (GNU findutils) 4.4.2
[[ $file =~ '^.*$' ]]
gagal untuk menggunakan recode
nama file, tapi sekarang saya akan melihat ke dalam convmv
jika perlu. Terima kasih.
convmv
untuk mengonversi nama file ke utf-8?