一時ファイルから特定のパターンを持つすべてのファイルを削除するクローンがあります。
find /tmp/* -type f -iname magick-* -exec rm {} \;
今すぐファイルを削除する前に、今後の分析のためにすべてのファイルの統計を記録したいと思います。
次の操作を試しましたが、複数の検索結果が出力されると機能しません。
find /tmp/* -type f -iname magick-* -exec stat {} \;
複数の結果に対して機能させるにはどうすればよいですか。ファイルに書き込むにはどうすればよいですか。
答え1
君は何も見せないするしようとすると発生します。ただ「動作しない」と言うことは決して正しいことではありません。
あなたの問題は、次のうちの1つ以上に関連している可能性があります。
- パターンを引用またはエスケープします
*
。これを行わずに現在のディレクトリにパターンと一致するファイルが 1 つ以上ある場合、パターンは一致するファイルのリストに展開され、コマンドに置き換えられます。いいえあなたは何が欲しいですか? - findと一緒に使用しないで
/tmp/*
ください。指定されたディレクトリ自体で完全に再帰でき/tmp
、find
名前がドットで始まるすべてのファイルも検索します。
それ以外にもrm
動作する場合はstat
動作しなければなりません。
次の2つを組み合わせることもできます。
find /tmp -type f -iname 'magick-*' -exec stat {} \; -exec rm {} \;
最初にstat
実行した後、stat
失敗がなければrm
実行されます。
find
必要なファイルにリダイレクトするだけで出力を保存できます。
答え2
一度にすべてを使用できます。全体の操作を一度に実行するので、より速い+
反対のアプローチを使用することもできます。
find /tmp -type f -iname 'magick-*'-exec stat {} + -exec sh -c 'rm -rf $@' _ {} + | tee -a log_to_file