Menyingkirkan file yang disebut "-d" [duplikat]

18

Kemungkinan Gandakan:
Bagaimana cara saya menghapus file bernama "-p" dari bash?
Bagaimana cara menghapus file dengan nama ini di linux: -] ??????? q
Perintah apa yang perlu saya gunakan untuk menghapus file bernama `-rf`?

Saya tidak sengaja membuat file bernama: -d

Saya sudah mencoba menggunakan tanda kutip tunggal dan ganda serta kartu liar untuk menghapusnya tetapi setiap kali "rm" memberi saya kesalahan ini:

Peringatan: --directory (-d) option tidak berdokumen dan tidak ada op. Gunakan -rf untuk menghapus dirs non-kosong rm: operan yang hilang Coba `rm --help 'untuk informasi lebih lanjut.

Bagaimana cara saya menyingkirkan file?

phileas fogg
sumber

Jawaban:

44
rm -- -d

--berarti "opsi akhir". Apa pun lebih lanjut pada baris perintah setelah ini ditafsirkan sebagai argumen (yaitu nama file dalam kasus Anda), dan bukan opsi.

Matteo Riva
sumber
28
rm ./-d

adalah jawaban untuk pertanyaan Anda.

bmargulies
sumber
1
rm -- -djuga bekerja
Ulrich Dangel
Ini adalah solusi terbaik
gd1
8

Menggunakan '-' adalah yang paling mudah dalam kasus khusus ini. Namun, solusi yang lebih umum jika Anda menemukan file dengan karakter kontrol yang tidak patut adalah merujuk file dengan 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
che2cbs
sumber
0

Gnu-find memiliki opsi -delete:

find -name "-d" -delete

kalau tidak Anda bisa mencoba

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

tetapi - solusi dari atas lebih pendek, dan cara untuk menghentikan interpretasi bendera dengan - digunakan oleh banyak program, menggunakan getopt-library, jadi mempelajarinya adalah hal yang berguna secara umum.

Tetapi menemukan / -hapus adalah sesuatu yang sangat berguna untuk dipelajari juga. Perhatikan bahwa kedua contoh akan menghapus file nama "-d" secara rekursif, yang mungkin tidak sering terjadi, tetapi jika Anda memiliki satu file, bernama "-d", Anda mungkin memiliki lebih banyak. :)

Pengguna tidak diketahui
sumber