ฉันมีกลุ่มไดเรกทอรีและไดเรกทอรีย่อยที่มีไฟล์ที่มีอักขระพิเศษเช่นไฟล์นี้:
robbie@phil:~$ ls test�sktest.txt
test?sktest.txt
ค้นหาพบลำดับการหลบหนี:
robbie@phil:~$ find test�sktest.txt -ls
424512 4000 -rwxr--r-x 1 robbie robbie 4091743 Jan 26 00:34 test\323sktest.txt
เหตุผลเดียวที่ฉันสามารถพิมพ์ชื่อของพวกเขาบนคอนโซลได้ก็เพราะความสมบูรณ์ของแท็บ นอกจากนี้ยังหมายความว่าฉันสามารถเปลี่ยนชื่อพวกเขาด้วยตนเอง (และตัดอักขระพิเศษ)
ฉันได้ตั้งค่า LC_ALL เป็น UTF-8 ซึ่งดูเหมือนจะไม่ช่วย (ยังไม่ได้อยู่ในเปลือกใหม่):
robbie@phil:~$ echo $LC_ALL
en_US.UTF-8
ฉันกำลังเชื่อมต่อกับเครื่องโดยใช้ ssh จาก mac ของฉัน มันคือการติดตั้ง Ubuntu:
robbie@phil:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=7.10
DISTRIB_CODENAME=gutsy
DISTRIB_DESCRIPTION="Ubuntu 7.10"
Shell คือ Bash TERM ตั้งค่าเป็น xterm-color
ไฟล์เหล่านี้อยู่ที่นั่นมาระยะหนึ่งแล้วและยังไม่ได้สร้างขึ้นโดยใช้การติดตั้งของ Ubuntu ดังนั้นฉันไม่รู้ว่าการตั้งค่าการเข้ารหัสระบบเคยเป็นอย่างไร
ฉันได้ลองทำสิ่งต่าง ๆ ตาม:
find . -type f -ls | sed 's/[^a-zA-Z0-9]//g'
แต่ฉันไม่พบวิธีแก้ปัญหาที่ทำทุกอย่างที่ฉันต้องการ:
- ระบุไฟล์ทั้งหมดที่มีตัวละครที่ไม่สามารถเล่นได้ (ด้านบนจะข้ามไปมากจนเกินไป)
- สำหรับไฟล์ทั้งหมดในแผนผังไดเร็กทอรี (เรียกซ้ำ) ให้เรียกใช้ mv oldname newname
- เป็นทางเลือกความสามารถในการแปลอักขระพิเศษเช่นäถึง a (ไม่จำเป็น แต่น่ากลัวมาก)
หรือ
- แสดงไฟล์เหล่านี้อย่างถูกต้อง (และไม่มีข้อผิดพลาดในแอปพลิเคชันเมื่อพยายามเปิดไฟล์)
ฉันมีบิตและชิ้นส่วนเหมือนวนซ้ำทุกไฟล์และย้ายไปมา แต่การระบุไฟล์และการจัดรูปแบบไฟล์เหล่านั้นอย่างถูกต้องสำหรับคำสั่ง mv นั้นดูเหมือนจะเป็นส่วนที่ยาก
ข้อมูลเพิ่มเติมใด ๆ เกี่ยวกับสาเหตุที่แสดงไม่ถูกต้องหรือวิธี "คาดเดา" การเข้ารหัสที่ถูกต้องก็ยินดีต้อนรับเช่นกัน (ฉันได้ลองใช้ convmv แต่ดูเหมือนว่าจะไม่ทำสิ่งที่ฉันต้องการ: http://j3e.de/linux/convmv/ )