ファイルのみを削除し、ディレクトリ構造を維持するにはどうすればよいですか?

ファイルのみを削除し、ディレクトリ構造を維持するにはどうすればよいですか?

すべてのファイルを削除してフォルダ構造を維持したいと思います。どのような方法がありますか?

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

答え1

この試み:

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

現在の作業ディレクトリの下のすべてのファイル(ディレクトリを除く)が削除されます。このコマンドを使用するときは特に注意してください。

コンピュータのバージョンがfindそれをサポートしている場合は、次のものも使用できます。

find . ! -type d -delete

答え2

次のコマンドを使用してfind各ファイルを見つけることができますが、ディレクトリ構造は維持されます。

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

Unix and LinuxというタイトルのこのQ&Aによると:gnuは特定のシェルの{}を見つけてブロックします。どのシェルですか?{}、Bashなどの最新のシェルでは、単一のティック()でエスケープする'必要はなくなりました。

答え3

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

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

zshだけが持っています。ワイルドカード修飾子タイプ別にファイルを照合します。ただし、このrmコマンドはディレクトリでは機能しないため、bashでは次のものを使用できます。

shopt -s globstar
rm **/*

これはこれ以外のコマンドには影響しませんrm。通常、次のものを使用できますfind

find . -type f -delete

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

find . -type f -exec rm {} +

答え4

ディレクトリ構造を削除せずにパスとそのサブディレクトリ(時間ごとにフィルタリング)からファイルを削除するには、同様の要件があります。

私は私に合った次の形式を使用しました。

/test123/home/test_file_hip/data/nfs -mtime +6 -type f -exec rm{}\ を探します。

構文: find(ファイルパス) -mtime(日より大きいか小さい) -type f -exec rm {} \;

-type : "d" ディレクトリに記載されている "f" ファイルタイプ -exec : コマンドの実行 rm : 削除 {} : find コマンドの出力

注:使用前にテストしてください。私が見逃した部分がある場合は、いつでも修正または更新してください。

関連情報