อักขระพิเศษในชื่อไฟล์ (\ # 033OA)


10

ฉันมีปัญหาเล็กน้อยกับข้อผิดพลาดปากแข็งมากระหว่าง rsync มันเกิดจากไฟล์ที่มีตัวละครพิเศษในชื่อไฟล์ มีคนอื่นมาบ้าง แต่ฉันสามารถแยกแยะได้ด้วยการเปลี่ยนใจเลื่อมใสในการเข้ารหัสของชื่อไฟล์ อย่างไรก็ตามไฟล์นี้ฉันไม่สามารถหาได้

ดังนั้นนี่คือสิ่งที่ rsync พูดว่า:

../.\#033OA.tex.pyD0MB" failed: No such file or directory (2)

สิ่งแรกที่สังเกตได้คือรหัสอักขระไม่สามารถเป็นเลขฐานสิบหกหรือฐานแปดได้ดังนั้นฉันจึง googled และพบสิ่งนี้เท่านั้น ดังนั้นมันอาจเป็นCURSOR UPตัวละคร (หรือไม่ก็ได้) ฉันได้พยายาม

ls -la *`printf '\033OA'`*

ไม่มีประโยชน์ ฉันได้ลองไปป์ไลน์เอาต์พุตของ ls ของไดเร็กทอรีนั้นแล้วว่าodไม่มีประโยชน์

ฉันจะทำอะไรได้อีก หรือฉันกำลังมองหาตัวละครอะไรอยู่?

ขอบคุณ


1
ลองls -bซึ่งควรจะแสดงให้เห็นถึงการหลบหนีแบบ C
enzotib

ขอบคุณ ... ที่ช่วย ... สามารถย้ายด้วยความช่วยเหลือของ printf แล้ว ... ถ้าคุณ repost ความคิดเห็นนี้เป็นคำตอบที่ผมยินดีจะยอมรับมัน :)
luxifer

คำตอบ:


9

คุณสามารถใช้-bตัวเลือกที่จะlsแสดงตัวละครที่ไม่ใช่กราฟิกเป็นลำดับการหลบหนีแบบ C


1

ls -aqจะพิมพ์ชื่อไฟล์ทั้งหมดโดยใช้?อักขระที่ไม่สามารถพิมพ์ได้แต่ละตัว ในหลาย ๆ ตัวแปรยูนิกซ์ls -ABหรือls -Ab(ตรวจสอบหน้าคนของคุณ) จะพิมพ์ทางหนีแปด ด้วยls -aqคุณสามารถใช้เอาต์พุตที่แสดงเป็นรูปแบบเชลล์

$ ls -Aq
.?OA.tex.pyD0MB
… more stuff …
$ mv -i .?OA.tex.pyD0MB weird-file
$ less weird-file

อีกวิธีที่จะได้ชื่อไฟล์อย่างใดอย่างหนึ่งคือการใช้ความสมบูรณ์ของเชลล์: ป้อนmv .และกดTabซ้ำ ๆ จนกว่าจะใส่ชื่อแปลก ๆ


ls -qไม่แสดงไฟล์ในขณะที่ls -bทำ อาจเป็นเพราะชื่อไฟล์ของมันไม่ได้[weird-character]OA.texแต่จริงๆ`printf %b '\033OA'`.tex
luxifer

@luxifer มีเป็น.จุดเริ่มต้นของชื่อไฟล์ดังนั้นคุณจึงจำเป็นหรือls -Aq ls -aqและถ้าคุณใช้สัญลักษณ์ตัวแทนเชลล์คุณต้องทำให้.ชัดเจน: *จะไม่รวมไฟล์ แต่.*จะ
Gilles 'SO- หยุดความชั่วร้าย'

ไม่มีเลย! ผลลัพธ์ที่ฉันโพสต์มาจาก rsync และเป็นจุดสิ้นสุดของบรรทัด คัดลอก Rsync $DESTINATION/.$FILENAMEก่อนที่จะย้ายไฟล์ไปยังชื่อที่ถูกต้อง ดังนั้นที่มาไฟล์ไม่มี.ที่จุดเริ่มต้นของชื่อ นอกจากนี้ตามที่กล่าวมาls -qจะไม่ได้แสดงไฟล์ในขณะที่ls -bทำ
luxifer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.