ในระบบไฟล์ที่ชื่อไฟล์อยู่ใน UTF-8 ฉันมีไฟล์ที่มีชื่อผิดพลาด มันจะแสดงเป็น: D�sinstaller, ชื่อจริงตาม zsh D$'\351'sinstaller:, Latin1 สำหรับDésinstaller, ตัวเองป่าเถื่อนฝรั่งเศสสำหรับ "ถอนการติดตั้ง" Zsh จะไม่เข้าคู่กับมัน[[ $file =~ '^.*$' ]]แต่จะจับคู่กับก้อนกลม*- นี่คือพฤติกรรมที่ฉันคาดหวัง
ตอนนี้ฉันยังคงคาดหวังว่าจะพบมันเมื่อทำงานfind . -name '*'- ในความเป็นจริงฉันไม่เคยคาดหวังว่าชื่อไฟล์จะล้มเหลวในการทดสอบนี้ อย่างไรก็ตามด้วยLANG=en_US.utf8ไฟล์ไม่ปรากฏขึ้นและฉันต้องตั้งค่าLANG=C(หรือen_USหรือ'') เพื่อให้มันทำงาน
คำถาม: การดำเนินการที่อยู่เบื้องหลังคืออะไรและฉันจะคาดการณ์ผลลัพธ์ได้อย่างไร
ข้อมูล: Arch Linux 3.14.37-1-lts, find (GNU findutils) 4.4.2
[[ $file =~ '^.*$' ]]ความล้มเหลวในการใช้recodeชื่อไฟล์ แต่ตอนนี้ฉันจะดูconvmvถ้าจำเป็นต้องเป็น ขอบคุณ
convmvจะแปลงชื่อไฟล์เป็น utf-8 หรือไม่?