回答:
これを試して:
find . ! -type d -exec rm '{}' \;
これにより、現在の作業ディレクトリの下のディレクトリを除くすべてのファイルが削除されます。このコマンドには非常に注意してください。
find
お使いのマシンのバージョンがそれをサポートしている場合、使用することもできます
find . ! -type d -delete
find
コマンドは、引用符を見たことがありません。{}
マーカーを引数として見ているだけです。
-exec command {} +
」と「-exec command ;
」が表示されています。私は\;
過去に「{}」を使用したことがありません。
コマンドfind
を使用してすべてのファイルを検索できますが、ディレクトリ構造は維持できます。
$ find /some/dir -type f -exec rm {} +
このUnix&Linuxに関するQ&Aタイトル:gnu find and masking for {shells for some shells-which?、{}
シングルティック('
)でエスケープすることは、Bashなどの現代のシェルではもう必要ないようです。
ディレクトリ構造を削除せずに、パスとそのサブディレクトリからファイルを削除する(時間によるフィルタリング)同様の要件がありました。
そして、私は私のために働いた以下のフォーマットを使用しました。
find / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
Syntex:find(ファイルのパス)-mtime(日数よりも多いか少ない)-type f -exec rm {} \;
-type:「d」ディレクトリのファイル「f」のタイプに言及-exec:コマンドの実行rm:削除{}:findコマンドの出力
注:使用する前にテストしてください。私が何かを見逃した場合は、修正または更新してください。
find ... rm
構造はすでにカバーされているため、この質問に対する新しい回答としての価値ある貢献であるかどうかはわかりません。