Trong một hệ thống tệp có tên tệp trong UTF-8, tôi có một tệp có tên bị lỗi; nó được hiển thị dưới dạng : D�sinstaller, tên thật theo zsh : D$'\351'sinstaller, Latin1 Désinstaller, bản thân nó là một sự man rợ của Pháp đối với "gỡ cài đặt". Zsh sẽ không phù hợp với nó [[ $file =~ '^.*$' ]]nhưng sẽ phù hợp với nó với một tinh thần toàn cầu *là hành vi mà tôi mong đợi.
Bây giờ tôi vẫn mong đợi tìm thấy nó khi chạy find . -name '*'một số vấn đề thực tế, tôi sẽ không bao giờ mong đợi một tên tệp sẽ thất bại trong bài kiểm tra này. Tuy nhiên, với LANG=en_US.utf8, tệp không hiển thị và tôi phải đặt LANG=C(hoặc en_US, hoặc '') để nó hoạt động.
Câu hỏi: Việc triển khai đằng sau là gì và làm thế nào tôi có thể dự đoán kết quả đó?
Infos: Arch Linux 3.14.37-1-lts, find (GNU findutils) 4.4.2
[[ $file =~ '^.*$' ]]việc không sử dụng recodetên tệp, nhưng bây giờ tôi sẽ xem xét convmvnếu cần. Cảm ơn.
convmvchuyển đổi tên tệp thành utf-8 chưa?