web-dev-qa-db-ja.com

ファイルのみを削除し、ディレクトリ構造は保持する方法は?

すべてのファイルを削除したいが、フォルダ構造は維持したい。方法はありますか?

注:(GNU bash 4.1.5を使用しています)。

18
Tom Brito

これを試して:

find . ! -type d -exec rm '{}' \;

これにより、現在の作業ディレクトリの下にある、ディレクトリを除くすべてのファイルが削除されます。このコマンドには十分注意してください。

マシンのfindのバージョンがサポートしている場合は、

find . ! -type d -delete
20
user26112

コマンドfindを使用すると、すべてのファイルを検索できますが、ディレクトリ構造は維持できます。

$ find /some/dir -type f -exec rm {} +

このUnixおよびLinuxのQ&Aのタイトルは次のとおりです: gnu find and masking the {} for some shells-which? 、escaping {}単一ティック(')は、Bashなどの現代のシェルではもう必要ないようです。

8
slm

現在のディレクトリとサブディレクトリのすべての通常のファイルを再帰的に削除する簡単な方法:

zsh -c 'rm **/*(.)'

Zshだけが globbing qualifiers を使用して、ファイルをタイプ別に照合します。ただし、rmコマンドはディレクトリでは機能しないため、bashでは次のコマンドを使用できます。

shopt -s globstar
rm **/*

ただし、これはrm以外のコマンドでは機能しません。通常、findを使用できます。

find . -type f -delete

または、find-deleteをサポートしていない場合:

find . -type f -exec rm {} +