ฉันมีไฟล์เล็ก ๆ ที่น่ารำคาญซึ่งชื่อดูเหมือนจะเป็นตัวอักษรเดียวและตัวละครนั้นเป็น \r
ฉันจะลบสิ่งนี้ได้อย่างไร
นี่คือสิ่งที่ฉันได้รับls -bl
:
-rw-rwxr--+ 1 root snapplewriters 0 Aug 29 2011 \r
ls -l
แค่แสดงมัน "?"
ฉันมีไฟล์เล็ก ๆ ที่น่ารำคาญซึ่งชื่อดูเหมือนจะเป็นตัวอักษรเดียวและตัวละครนั้นเป็น \r
ฉันจะลบสิ่งนี้ได้อย่างไร
นี่คือสิ่งที่ฉันได้รับls -bl
:
-rw-rwxr--+ 1 root snapplewriters 0 Aug 29 2011 \r
ls -l
แค่แสดงมัน "?"
คำตอบ:
เราls -li
จะได้รับหมายเลข inode สำหรับไฟล์ (คอลัมน์แรก) จากนั้นใช้find
เพื่อลบมัน (สมมติว่า inode คือ 12345):
find . -inum 12345 -exec rm -i {} \;
find
คุณสามารถทำได้เช่นกันfind . -inum 12345 -delete
ใช้การอ้างอิง ANSI-C: rm $'\r'
http://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting
ฉันจะไปถึง Python เป็นการส่วนตัว:
>>> import os
>>> '\r' in os.listdir('.')
True
>>> os.unlink('\r')
แต่คุณสามารถทำสิ่งนี้ได้จากเปลือกถ้าคุณเข้าใจตัวละครการหลบหนี
$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file ‘\r’? y
removed ‘\r’
อีกวิธีที่รวดเร็วในการลบไฟล์ที่เรียกว่า<carriage return>
หากคุณใช้ Bash shell คือ:
$ rm <control-v><control-m>
ชื่อไฟล์อักขระเดี่ยวผิดปกติและหากคุณไม่มีไฟล์ดังกล่าวในไดเรกทอรีของคุณคุณสามารถลองทำสิ่งนี้:
rm ?
ฉันขี้เกียจเกินไปที่จะเรียนรู้หรือค้นหาวิธีอ้างอิงตัวละครแปลก ๆ ดังนั้นฉันจึงใช้ตัวแปรหลายครั้งเมื่อฉันติดกับไฟล์ที่มีชื่อยาก
man bash
ใน ลองtouch a b c d $'\r'; rm ?