これにより、サブディレクトリとその下のすべてが削除されることを知っています。
rm -rf <subdir-name>
しかし、現在のディレクトリ内のすべてのものと、その下のすべてのサブディレクトリ、およびそれらすべてのサブディレクトリの内容をどのように削除しますか?
安全なコンピューティングを実践します。階層を1レベル上に移動し、ワイルドカード式を使用しないでください。
cd ..; rm -rf -- <dir-to-remove>
2つのダッシュ--
は、<dir-to-remove>
がダッシュで始まる場合でも、コマンドラインオプションではないことをrm
に伝えます。
現在のファイル/ディレクトリの下にあるすべてのファイル/ディレクトリを削除します。
find -mindepth 1 -delete
あなたが持っている別のディレクトリで同じことをしたい場合は、単に名前を付けることができます
find <name-of-directory> -mindepth 1 -delete
サブディレクトリとそのファイルだけでなく、ディレクトリ自体も削除する場合は、-mindepth 1
を省略します。削除されるもののリストを取得するには、-delete
なしで実行します。
私がいつもしているのはタイプ
rm -rf *
その後、ESC- *を押します。bashは、*を現在の作業ディレクトリ内のファイルとディレクトリの明示的なリストに展開します。
利点は次のとおりです。
実際、私はこれがとても好きなので、.bashrcの次の行を使用して、TABのデフォルトの動作にしました。
bind TAB:insert-completions
つかいます
rm -rf *
更新:.
は現在のディレクトリを表しますが、これは使用できません。このコマンドには、.
および..
の明示的なチェックがあるようです。代わりにワイルドカードグロビングを使用してください。しかし、これにはリスクが伴います。
より安全なバージョンのIMOは次のものを使用することです:
rm -ri *
(すべてのファイル/ディレクトリを削除する前に確認を求められます。)
rm –rf .
は、サブディレクトリとそのコンテンツを含む現在のすべてを直接削除します。 単一のドット(.
)は現在のディレクトリを意味します。 二重ドット(rm -rf ..
)は前のディレクトリを意味するため、..
を実行しないように注意してください。
これは、あなたが私のようであり、複数のターミナルウィンドウを同時に開いている場合は、安全で、rm -ir .
を使用する方が良いでしょう。コマンド引数を見て理由を理解しましょう。
まず、 rm
コマンドのmanページ (ほとんどのUnixではman rm
)を見ると、–r
は「ディレクトリの内容を再帰的に削除する」ことを意味していることに気づきます。したがって、rm -r .
を単独で実行すると、現在のディレクトリとその下のすべてが削除されます。
rm –rf .
で追加された-fは、「存在しないファイルを無視し、プロンプトを表示しない」ことを意味します。このコマンドは、現在のディレクトリ内のすべてのファイルとディレクトリを削除し、本当にそれを行うかどうかを確認するプロンプトを表示しません。 -f
は、特権ユーザーの下でコマンドを実行する場合に特に危険です。これは、ディレクトリの内容を削除することができます。
一方、rm -ri .
では、-i
を置き換える-f
は、「削除前にプロンプトを出す」ことを意味します。これは、rmがすべてのファイルを正常に削除する前に、「おっと、私が望んでいるものではない」と言う機会を得るということです。
私の初期のシステム管理者時代には、完全な特権(root)でログインしている間にシステムでrm -rf /
を実行しました。その結果、バックアップからシステムを復元するのに2日かかりました。だからこそ、今rm -ri
を採用しています。
rm -rf *
しないでください!それは危険です!あなたが正しいディレクトリにいることを確認してください!
どうですか:
rm -rf "$(pwd -P)"/*
make sure正しいディレクトリにいます
rm -rf *
この最も簡単で安全な一般的なソリューションは、おそらく次のとおりです。
find -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf
私はこの答えが良いと信じています:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
最上位ディレクトリの名前が
images
の場合、rm -r images/*
を実行します。これは、シェルglob演算子*
を使用して、イメージ内のすべてのファイルまたはディレクトリでrm -r
を実行します。
基本的には1レベル上に移動してから、Xディレクトリ内のすべてを削除すると言います。この方法では、元のフォルダーを保持しながら、コンテンツを削除するフォルダーを指定するだけで、「ここですべてを削除する」よりも安全です(許可されていない、または単にしたくないためにしたいことがありますフォルダーの既存のアクセス許可を変更するには)