ในระบบไฟล์ที่ชื่อไฟล์อยู่ใน 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 หรือไม่?