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 recodenama file, tapi sekarang saya akan melihat ke dalam convmvjika perlu. Terima kasih.
convmvuntuk mengonversi nama file ke utf-8?