web-dev-qa-db-ja.com

ディレクトリ内のすべてを削除するにはどうすればよいですか?

隠しファイルや隠しディレクトリなど、ディレクトリ内のすべてを削除するにはどうすればよいですか?

現在、私は以下を使用します:

rm -rf *
rm -rf .*
25
David Smith

シンプルでわかりやすい:

find -delete 

ディレクトリと隠しファイルが含まれています。少なくともgnu-findは-deleteを知っています。あなたのfindは異なる場合があります。

17
user unknown

最良の答えは、それを行わないことです。ディレクトリ自体を再帰的に削除してから、空のディレクトリとして再作成します。他の人があなたがやろうとしていることを理解する方が、より信頼性が高く、簡単です。ディレクトリを再作成すると、所有者、グループ、および権限が異なる場合があります。それらが重要な場合は注意してください。また、実行中のプログラムのいずれかに、ディレクトリで開いているファイルハンドル(記述子)がある場合は、それを削除する必要はありません。これらの特別なケースのいずれにも該当しない場合は、ディレクトリ全体を削除する方が簡単です。

11
Chris Quenelle
rm -rf -- * .[!.]* ..?*

3つそれぞれのパターンは、何も一致しない場合はそれ自体に展開されますが、すべてに一致させたいため、ここでは問題にならず、存在しない引数をrm -fが無視しました。

.*.. と一致することに注意してください。

ディレクトリにいる場合:

cd .. && rm -rf dir && mkdir dir && cd dir

さもないと:

rm -rf /path/to/dir && mkdir /path/to/dir

2
David Harris

ああ、私のZsh

rm -rf (.|)*

繰り返しますが、これはZsh専用です。

2
phunehehe

findの使用についてはどうですか。サブディレクトリを掘り下げる必要がある場合、これは一般的に良い選択だと思います。

find . -type f -exec rm {} \;
1
slashdot