web-dev-qa-db-ja.com

「-rf」というファイルを削除するには、どのコマンドを使用する必要がありますか?

ある時点で、ファイルシステム上に-rfというファイルを作成するというおかしなことをしました。
削除する方法がわかりません...

私はもう試した:

rm "-rf"
rm \-rf

これらはすぐに終了しますarrgh!

誰でもこのファイルを削除する方法を知っていますか?できれば、フォルダ全体を誤って掃除しないでください。

unlink -rf

または

rm -- -rf
128
Josh Lee

別のオプション:

rm ./-rf

...現在のディレクトリがファイルが存在するディレクトリであると仮定します。

61
martin clayton

または、常にそのディレクトリを編集し、その方法でファイルを削除することもできます。

vim .

次に、ファイルが含まれている行を削除します(Dを使用すると、ddは機能しません)。

34
oadams

奇妙なファイル名を削除するための一般的な手法は、使用することです。

 ls -li

ファイルのiノード番号を見つけて使用します。

find ./ -inum <number of file> -delete

すべての特殊なケースを覚えておく必要はありません。

25
user51427

"rm--filename"トリックについては知っていますが、一般に、なんらかの理由で先頭にあるファイルを取得した場合、その名前を削除したいので、GUIファイルマネージャーを起動してそこから実行し、チャンスを排除します間違いの。

17
Heptite

確認したいだけの場合:

 mv -- -rf remove.-rf
 [[check]]
 rm remove.-rf
9
Jan

GNU以外のUnixを使用していて、石器時代に戻ったと感じた場合に備えて(--構文なし、検索する-inumスイッチなし、リンク解除コマンドなし、エディターがディレクトリの編集を拒否するなど) 。etc.)あなたはまだ自分自身を助けることができます:

find . -name '-rf' -print | xargs rm -i

これにより、findはすべての潜在的な候補をrmにフィードし、フィードされたすべてのファイルに対して許可/拒否を要求します。

rm-iスイッチさえサポートしていない場合(PA-RISC 1.1上のHP-UX 10.2は誰か?)、さらに注意してください:

find . -name '-rf' -print
# check that find's output is exactly and only what you need to delete
find . -name '-rf' -print | xargs rm
4
Olfan

jleedevの答え をサポートして、次のように改善します。

rm -i -- -rf

インタラクティブモードにして確認を求めることで、何を削除したかを確実に確認できます。 (解決策は素晴らしいですが、それは単にあなたの心の平和のためです)

実際、それを使っても:

\rm -i -- -rf

エイリアスを使用していないことを確認してください。

3
haylem

すでに提案されているので、私は常に構文を使用してきました

rm -rf -- filename

-がコマンドに他のパラメータを検索するのではなく、ファイル名のみを検索することを示すため、ダッシュをプレフィックスとして持つファイルを削除する必要があったとき。

それを心に留めておいて、偶然のファイル削除によって私の重要なフォルダーを保護するために、私は単に-iと呼ばれる空のファイルを作成するために使用されました探す。したがって、コマンド

rm -rf *

保護されたフォルダで実行されると、実行中に次のコマンドで展開されます:

rm -rf -i filename1 filename2 .... (all the other files in the folder)

シェルは、すべてをすぐに削除するのではなく、確認の要求を停止します(-iオプションが必要)。

2
Ghidello

前回この問題が発生したときは、次のようにして解決しました:

python

oSをインポート

os.remove( "-rf")

2
Jono

マーティンクレイトンは正しいです。

とてもシンプルで論理的です。オプションが存在する場合は常に-XXXまたは--CCCCしたがって、./またはフルパス-rfはオプションとは見なされず、通常の文字列と見なされます。

「すべて」の奇妙なファイル名で動作します。

#pwd 
/tmp/TEST 
#touch ./-rf
#ls 
-rf 
#rm ./ -rf 
#ls 
#
1
Louis

rm--rfほとんどのgnuツールは-オプションの終わりのマーカーとして受け入れます

1
Konrads