大きなツリーをスキャンし、ツリー全体をスキャンする前に結果を別のコマンドに渡したい場合はどうなりますか?私が読んだところによると、そのように見えますが、バックグラウンドキャッシュがないことを確認したいと思います。 forループを使用できるようにバックグラウンドキャッシュがあるかどうかを知りたいです。
複数のファイルに対して検索を実行すると、ディスクに遅延やストレスがありません。頻繁に実行され、長いファイルのリストを処理するスクリプトの場合、find はリスト全体を次のコマンドに渡すのに数分かかることがあります。 findは一度に1つのファイルでのみ実行し、以前の-execが完了するまでターゲットを検索しないようにします。
答え1
かどうかを尋ねるようです。
find -exec some_command '{}' \;
some_command
バックグラウンドで他の操作を実行せずに、各ファイルに対して順番に1回実行されます。some_command
実際、これは本当です。
しかし、これはハードドライブの摩耗を減らすと思うようです。そうではないかもしれません。 I/O を複数回開始および停止するには、一度に大量のデータを読み取るよりも多くの機械的な動きが必要です(非常に少し)従来の回転式ハードドライブはより多くの摩耗を経験します。
答え2
いくつかの異なるアプローチを試して、名前付きパイプを使用することができます。パイプを永久プロセスで開始する方法
オリジナル:
- 名前付きパイプの作成
- -exec 引数で使用したいプロセスを起動し、パイプで検索して読み込みます。
- 検索プロセスを開始し、結果をパイプに書き込みます。
- 達成した結果が残りのファイルを一覧表示する必要がないことを意味する場合は、プロセスを制御して検索を停止できます。