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 のイディオム。