111

これにより、サブディレクトリとその下のすべてが削除されることはわかっています。

rm -rf <subdir-name>

しかし、現在のディレクトリ内のすべてとその下のすべてのサブディレクトリ、およびそれらすべてのサブディレクトリの内容を削除するにはどうすればよいでしょうか?

4

10 に答える 10

166

安全なコンピューティングを実践します。階層の 1 レベル上に移動し、ワイルドカード式を使用しないでください。

cd ..; rm -rf -- <dir-to-remove>

2 つのダッシュは、ダッシュで始まる場合でも、コマンド ライン オプションではない--ことrmを示しています。<dir-to-remove>

于 2009-05-04T16:21:41.007 に答える
46

現在のファイル/ディレクトリの下にあるすべてのファイル/ディレクトリを削除します。

find -mindepth 1 -delete

あなたが持っている名前の別のディレクトリで同じことをしたい場合は、その名前を付けることができます

find <name-of-directory> -mindepth 1 -delete

サブディレクトリとそのファイルだけでなく、ディレクトリ自体も削除する場合は、-mindepth 1. -delete削除されるもののリストを取得するには、なしで実行します。

于 2009-05-04T16:52:28.517 に答える
44

私がいつもしているのはタイプです

rm -rf *

次に ESC-*を押すと、bash は * を現在の作業ディレクトリ内のファイルとディレクトリの明示的なリストに展開します。

利点は次のとおりです。

  • Enter キーを押す前に、削除するファイルのリストを確認できます。
  • コマンド履歴には、ワイルドカードがそのままの状態で「rm -rf *」が含まれないため、間違った場所で間違ったタイミングで誤って再利用される可能性があります。代わりに、コマンド履歴には実際のファイル名が含まれます。
  • また、「ちょっと待って…どのファイルを削除したの?」と答えるのにも便利です。ファイル名は、端末のスクロールバック バッファまたはコマンド履歴に表示されます。

実際、私はこれがとても気に入ったので、.bashrc に次の行を追加して、TAB のデフォルトの動作にしました。

bind TAB:insert-completions
于 2009-05-04T18:06:37.417 に答える
23

使用する

rm -rf *

更新:.は現在のディレクトリを表しますが、これは使用できません。.コマンドには、との明示的なチェックがあるようです..。代わりにワイルドカード グロビングを使用してください。しかし、これは危険な場合があります。

より安全なバージョンの IMO を使用することです。

rm -ri * 

(これにより、すべてのファイル/ディレクトリを削除する前に確認を求めるプロンプトが表示されます。)

于 2009-05-04T16:17:22.937 に答える
7

rm –rf .サブディレクトリとその内容を含む現在のすべてを直接削除するのは正しいです。単一のドット( .) は、現在のディレクトリを意味します。二重ドット( ) は前のディレクトリを意味するrm -rf ..ので、しないように注意してください。..

そうは言っても、あなたが私のように複数の端末ウィンドウを同時に開いている場合は、安全をrm -ir .確保してコマンド引数を使用して理由を理解することをお勧めします。

まず、rmコマンドのマニュアル ページ(man rmほとんどの Unix で) を見ると、 –r「ディレクトリの内容を再帰的に削除する」という意味であることがわかります。したがって、rm -r .単独で実行すると、現在のディレクトリとその下のすべてが削除されます。

追加された -fはrm –rf .、「存在しないファイルを無視し、プロンプトを表示しない」ことを意味します。このコマンドは、現在のディレクトリ内のすべてのファイルとディレクトリを削除し、本当に削除するかどうかを確認するプロンプトを表示しません。-f特権ユーザーの下でコマンドを実行すると、ディレクトリの内容を削除する可能性があり、それが本当に必要なものであることを確認する機会が得られないため、特に危険です。

一方、「削除する前にプロンプ​​トを表示する」という手段rm -ri .-i代わるものです。-fこれは、rm が喜んですべてのファイルを削除する前に、「おっと! それは私が望んでいるものではない」と言う機会が得られることを意味します。

私の初期のシステム管理者の頃、私はrm -rf /完全な権限 (root) でログインしているときにシステムで を実行しました。その結果、バックアップからシステムを復元するのに 2 日が経過しました。だからこそ今採用しrm -riています。

于 2009-05-04T16:57:06.053 に答える
7

どうですか:

rm -rf "$(pwd -P)"/* 
于 2009-05-06T08:58:52.083 に答える
5
rm  -rf * 

それをしないでください!危ないです!正しいディレクトリにいることを確認してください!

于 2009-05-04T16:18:21.030 に答える
4

正しいディレクトリにいることを確認してください

rm -rf *
于 2009-05-04T16:17:41.500 に答える
2

この最も単純で安全で一般的な解決策はおそらく次のとおりです。

find -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf
于 2009-05-04T17:26:41.787 に答える