การกำจัดไฟล์ชื่อ“ -d” [ซ้ำกัน]


18

ข้อมูลซ้ำที่เป็นไปได้:
ฉันจะลบไฟล์ชื่อ "-p" จาก bash ได้อย่างไร
วิธีลบไฟล์ด้วยชื่อนี้บน linux: -] ??????? q
ฉันต้องใช้คำสั่งอะไรเพื่อลบไฟล์ที่เรียกว่า `-rf`?

ฉันสร้างไฟล์ชื่อ: -d

ฉันได้ลองใช้เครื่องหมายคำพูดเดี่ยวและคู่รวมถึง wild cards เพื่อลบออก แต่ทุกครั้งที่ "rm" ให้ข้อผิดพลาดนี้กับฉัน:

คำเตือน: - ตัวเลือกไดเรกทอรี (-d) ไม่มีเอกสารและไม่มีตัวเลือก ใช้ -rf สำหรับการลบ dirs ที่ไม่ว่างเปล่า rm: ตัวถูกดำเนินการที่หายไปลอง `rm --help 'สำหรับข้อมูลเพิ่มเติม

ฉันจะกำจัดไฟล์ได้อย่างไร

คำตอบ:


44
rm -- -d

--หมายถึง "สิ้นสุดตัวเลือก" สิ่งใดเพิ่มเติมในบรรทัดคำสั่งหลังจากนี้ถูกตีความว่าเป็นอาร์กิวเมนต์ (เช่นชื่อไฟล์ในกรณีของคุณ) และไม่ใช่ตัวเลือก



8

การใช้ '-' นั้นง่ายที่สุดในกรณีนี้ อย่างไรก็ตามวิธีแก้ปัญหาทั่วไปที่มากกว่าถ้าคุณสะดุดไฟล์ที่มีอักขระควบคุมที่ไม่สามารถพิมพ์ได้คือการอ้างอิงไฟล์โดย inode:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory

0

Gnu-find มีตัวเลือก -delete:

find -name "-d" -delete

อื่นคุณสามารถลอง

find -name "-d" -exec rm {} ";" 

แต่ - - การแก้ไขจากด้านบนสั้นกว่าและวิธีการหยุดการตีความสถานะด้วย - ถูกใช้โดยโปรแกรมหลายโปรแกรมโดยใช้ getopt-library ดังนั้นการเรียนรู้มันเป็นสิ่งที่มีประโยชน์โดยทั่วไป

แต่ find / -delete นั้นเป็นสิ่งที่มีประโยชน์มากในการเรียนรู้เช่นกัน โปรดทราบว่าทั้งสองตัวอย่างจะลบไฟล์ชื่อ "-d" ซ้ำซึ่งอาจเกิดขึ้นไม่บ่อยนัก แต่หากคุณมีไฟล์เดียวชื่อ "-d" คุณอาจมีมากกว่านั้น :)

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