type 結果をフィルタリングするオプション
find type を受け入れます たとえば、ファイルのみを選択するためのオプション。
find /path/to/files -type f -mtime +10 -delete
-delete を省略 削除するものを表示し、それを確認したら、先に進んで完全なコマンドを実行してください。
これは、ディレクトリではなくファイルでのみ実行されます。 -type d を使用 逆に、引数に一致するディレクトリのみを一覧表示します。
追加オプション
man find を読みたいと思うかもしれません 、将来必要になる可能性のあるオプションがいくつかあります。例:-maxdepth 見つかったアイテムを特定の深さだけに制限することができます。 -maxdepth 0 サブディレクトリに再帰しません。
コメント
-
rmでフォルダーを削除できないため、コマンドがどのようにフォルダーを削除したのだろうか それだけ。rm -rが必要です -
また、
/path/to/files*紛らわしいです。/path/to/files/のことですか または、ワイルドカードが複数のファイルおよびフォルダー名に展開されることを期待していますか? -
{}を入れる 一重引用符で囲みます。例:'{}'バックスラッシュでセミコロンを保護するのと同じように、置き換えられたファイル/ディレクトリ名がシェルによって解釈されないようにします。
以前の回答と同様に(両方とも+1)、トリックは -type f を使用することです 述語。
-exec rm '{}' の代わりに -delete も使用できます 述語。しかし、そうしないでください。 -exec rm '{}' で 最初に -exec echo rm '{}' を行うことができます (またそうすべきです) これが本当にあなたが望むものであることを確認します。その後、echo なしでコマンドを再実行します .
-delete の使用 より高速です (余分な fork() はありません) と execve() -delete であるため、これは危険です。 条件としても機能するため、
# delete *.tmp files
find . -type f -name '*.tmp' -delete
ただし、引数のみを交換する場合:
# delete ALL files
find . -type f -name '*.tmp' -delete
find が必要な場合 と rm 大量のファイルをより高速に処理するには、find ... | xargs ... rm をチェックしてください UNIX のイディオム。