วิธีลบไฟล์ด้วยชื่อนี้บน linux: -] ??????? q [ซ้ำกัน]


14

ยังไงก็ตามไฟล์ที่ชื่อว่า-]???????qถูกสร้างขึ้นใน terminal ของฉัน ฉันลอง rm -f "-] ??????? q" (ในเครื่องหมายคำพูดคู่) แต่ไม่ได้ลบ (ข้อผิดพลาด :: rm: invalid option -- ]) ฉันจะลบมันได้อย่างไร


ผมมีปัญหาที่คล้ายกันในกรณีของฉันที่เป็นปัญหากับการดำเนินการ samba เพียงแค่พยายามที่จะ SSH ไปยังเซิร์ฟเวอร์แล้วเอามัน
Buksy

คำตอบ:


26

ตัวอย่างเช่นกับ:

rm -- '-]???????q'

--หมายถึงที่ไหน: "หยุดการแยกวิเคราะห์ตัวเลือก"


ที่จริงฉันพบปัญหาที่คล้ายกันซึ่งไม่ได้คิดเกี่ยวกับการเป็นสวิตช์ ฉันสาบานว่าฉันใช้เวลาประมาณ 2 ชั่วโมงในการพยายามคิดออก
Jeff F.

หลาย ๆ แอปพลิเคชั่นใช้งาน--เดาว่าเป็นมาตรฐานที่แท้จริงเนื่องจากgetoptฟังก์ชั่น
cYrus

13

คุณสามารถใช้ชื่อไฟล์ด้วย rm หรือหมายเลข inode ด้วย find like:

rm -- -]???????q
# or
  -> ls -i                                                                                                                         
47984689 blah.ui  47983771 __init__.py  
47983773 testpy.e4p  47985161 Ui_blah.py

  -> find -inum 47983773                                                                                                           
./testpy.e4p

  -> find -maxdepth 1 -inum 47983773 -exec rm -i '{}' \;
#or
  -> find -maxdepth 1 -inum 47983773 -delete

เพิ่ม -maxdepth 1 มิฉะนั้นการค้นหาจะวนซ้ำในไดเรกทอรีย่อยทั้งหมด:find -maxdepth 1 -inum 47983773 -delete
Fabian Ritzmann

@FabianRitzmann โทรดีฉันเพิ่มมัน
OneOfOne

1
นี่ควรเป็นคำตอบที่เลือก การเข้าถึงไฟล์ที่มีอักขระที่ไม่ถูกต้องในชื่อโดย iNode เป็นวิธีที่ถูกต้องเท่านั้น
ScumCoder

1
rm ./"-]???????q"

เครื่องหมายคำพูดคู่ป้องกันไม่ให้เชลล์ขยายเครื่องหมายคำถาม ตัวอย่างเช่นหากคุณมีไฟล์อื่นที่เรียกว่า-] foobar.q :

$ touch ./"-]???????q" ./-]foobar.q
$ echo ./-]???????q
./-]foobar.q ./-]???????q

โอ้ ฉันใส่เครื่องหมายคำพูด แต่หายไป./
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.