-mtime +30 を適用すると、find コマンドがフルディスク検索を実行しているかどうかを知っていますか?
ディレクトリの数が増えるにつれて、findを実行するたびにデッドロックに陥ることが心配され、検索するディレクトリの数を制限する方法を見つけようとしますが、mtimeが定義されていてもまだすべてのディレクトリを検索するかどうかはわかりません。
答え1
mtime
ファイルシステム階層で検索する場所を決定せずに、検出されたファイルをテストして、修正時間(30分より大きい場合)を現在の時間と比較して確認します。
検索が発生する場所を制御するには、検索しているパスを調べます(再帰的または非再帰的)。たとえば、-xdev
特定のディレクトリ、特定のファイルシステムなどにのみ(再帰)検索を制限できます。
確認してくださいman find
。
答え2
find
ディレクトリツリーが検索されます(必ずしもディスク全体である必要はありません)。
デフォルトでは、find
ディレクトリは階層内のすべてのファイルを返すようにチェックされます。
テスト(例-mtime
)返されたファイルを変更しないでください。一部と組み合わせない限り行動(例:-prune
または-quit
)、ファイル変更時間は検索スペースには影響しません。
さまざまな方法オプション、テストと行動マニュアルページに記載されています。
ディレクトリ数が増えると、findを実行するたびにデッドロックに陥るかと心配され、検索するディレクトリ数を制限する方法を探そうとします。
なぜ「停滞状態」が問題なのかよく分からない。ファイルが増えると、find
作業量も増えます。しかし、常に行われなければなりません。
階層内のどのファイルが一致または一致しない可能性があるかについての情報がわからない場合、find
どのファイルシステムも役に立ちません。すべての可能な一致を印刷する唯一の方法は、すべての可能なファイルをチェックすることです。
これで、可能なタスクを制限する情報がある場合は、いくつかのタスクを追加して実行される作業量を減らすことができます。
答え3
あなたが探しているのはオプションです-maxdepth
。find
このオプションを使用して、コマンドで検索されるディレクトリの数を制限できます。たとえば、次のコマンドは、現在のディレクトリの下の2つのディレクトリに繰り返されます。
find . -maxdepth 2 -iname '*.txt'
-maxdepth 1
現在のディレクトリのみを検索するには、この値を次に変更します。より多くのディレクトリに繰り返すには、値を増やします。
man
ページからfind
:
-max深度レベルは、コマンドライン引数の下のディレクトリの最高レベル(負以外の整数)レベルに低下します。 -maxlength 0は、コマンドライン引数にのみテストと操作を適用することを意味します。
-min 深さレベルレベル(負以外の整数)より低いレベルではテストや操作を適用しません。 -minlength 1は、コマンドラインパラメータを除くすべてのファイルを処理することを意味します。
にどの値を渡しても+mtime
コマンドを実行し、「.」を使用している場合にのみfind
ディスク全体を確認してください。最初のオプションとして指定するか、コマンドの最初のオプションがあり、言及したり値を与えたりしない場合。find
/
find
/
-maxdepth
-mindepth
たとえば、
sree@seiko:/ : pwd
/
sree@seiko:/ : find . -iname "*.txt"
sree@seiko:/ :