重複の可能性があるもの:
bash から「-p」という名前のファイルを削除するにはどうすればよいですか?
Linux でこの名前のファイルを削除する方法: -]?????????q
`-rf` というファイルを削除するにはどのコマンドを使用する必要がありますか?
誤って次のファイルを作成しました: -d
一重引用符、二重引用符、ワイルドカードを使用して削除しようとしましたが、毎回「rm」で次のエラーが発生します。
警告: --directory (-d) オプションは文書化されておらず、何も実行しません。空でないディレクトリを削除するには -rf を使用してください。rm: オペランドがありません。詳細については `rm --help' を試してください。
ファイルを削除するにはどうすればいいですか?
答え1
rm -- -d
--
「オプションの終了」を意味します。コマンドラインでこれに続くものはすべて、オプションではなく引数 (つまり、この場合はファイル名) として解釈されます。
答え2
rm ./-d
あなたの質問に対する答えです。
答え3
この特定のケースでは、「--」を使用するのが最も簡単です。ただし、印刷できない制御文字を含むファイルに遭遇した場合のより一般的な解決策は、ファイルを 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
答え4
Gnu-find には -delete オプションがあります:
find -name "-d" -delete
他に試すことができる
find -name "-d" -exec rm {} ";"
しかし、上記の -- ソリューションはより短く、 -- を使用してフラグの解釈を停止する方法は、getopt ライブラリを使用する多くのプログラムで使用されているため、これを学習することは一般的に役に立ちます。
しかし、find/-delete も学ぶと非常に便利なものです。どちらの例も、"-d" という名前のファイルを再帰的に削除しますが、これは頻繁に発生するわけではありませんが、"-d" という名前のファイルが 1 つある場合は、さらにファイルが存在する可能性があります。:)