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


16

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

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


1
「除外」とはどういう意味ですか?何らかのコマンドを使用していますか?その場合は、質問を更新してこれを含めてください。
slm


すべてのファイルを削除するつもりだと思います。
slm

1
@slmファイルを除外するために通常使用するコマンドで更新しました。
トム・ブリト

いいえ、まだしていません:-)または、削除した場合は、再度削除しました
モウグはモニカを

回答:


17

これを試して:

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

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

findお使いのマシンのバージョンがそれをサポートしている場合、使用することもできます

find . ! -type d -delete

@slm:それがどれほど移植性があるのか​​わかりません。セカンダリオプションとして追加しました。私の編集が私の答えをあなたのものと実質的に同一にしたことに気付いた。ごめんなさい。それは私の意図ではありませんでした。

「{}」はファイル内のスペースを保護しますか?私はあなたがいつも使っているのを見て、あなたがそれを使って解決策を投稿するのを見る前に私はそれが使われたことを見たことがないと思います。
slm

GNU findのマンページから:「ブレースは、シェルスクリプトの句読点として解釈されないように一重引用符で囲まれていることに注意してください。」しかし、いつそれが必要かはわかりません。私は主に習慣からそれを行います。findコマンドは、引用符を見たことがありません。{}マーカーを引数として見ているだけです。

例で見ましたが、テンプレートには「-exec command {} +」と「-exec command ;」が表示されています。私は\;過去に「{}」を使用したことがありません。
slm

@slm:テンプレートには、セミコロンのエスケープも表示されません。これは、シェルを使用して実行する場合に一般的に必要findです。テンプレートは、findコマンドが必要とする引数を表示するためのものであり、シェルに関連するものについては心配しないでください。

7

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

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

このUnix&Linuxに関するQ&Aタイトル:gnu find and masking for {shells for some shells-which?{}シングルティック(')でエスケープすることは、Bashなどの現代のシェルではもう必要ないようです。


1

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

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

タイプごとにファイルを一致させるグロブ修飾子を持っているのはzshだけです。ただし、rmコマンドはディレクトリでは機能しないため、bashでは、次を使用できます。

shopt -s globstar
rm **/*

これは、コマンド以外では機能しませんrm。一般的に、次を使用できますfind

find . -type f -delete

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

find . -type f -exec rm {} +

-2

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

そして、私は私のために働いた以下のフォーマットを使用しました。

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コマンドの出力

注:使用する前にテストしてください。私が何かを見逃した場合は、修正または更新してください。


1
これはOPで言及されていない追加の要件であり、基本find ... rm構造はすでにカバーされているため、この質問に対する新しい回答としての価値ある貢献であるかどうかはわかりません。
ジェフシャラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.