「検索」を高速化する方法はありますか?

「検索」を高速化する方法はありますか?

find端末の速度を上げる方法があるかどうか疑問に思います。インターネットGoogleを使用して検索する方が、ローカル検索文字列やファイル名よりも高速であることは言いません。

確立されたら、後で find コマンドを非常に迅速に実行できるローカルインデックスベースを持つ方法があるかどうか疑問に思います。

それとも別の提案がありますか?

ありがとうございます!

答え1

を試してくださいlocate。必要に応じて動作する必要があります。

答え2

これは主に検索基準によって異なります。

ファイル名またはファイル名パターンを検索する場合は検索がはるかに高速ですが、使用されるインデックスは通常1日1回だけ更新されるため、新しく作成されたファイルには適していません。しかし、使えばとても速いです。

ただし、findを使用すると、ファイルサイズ、ファイル期間、および検索で検索できないその他の項目を検索できます。

知っていたらどこ検索するには、次のものを使用できます。検索範囲:

find /some/path -size -10M -size +2M -mtime -365 ...

/some/pathにある2〜10Mサイズのファイル(最大1年)のみが検索されます。

パスで利用可能なプログラムは、次のように検索できます。どの;ヘルプ、lib、および設定ファイルどこ。例:

which java
/usr/bin/java

whereis firefox 
firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/share/firefox /usr/share/man/man1/firefox.1.gz

-exec、-execdir、-ok、または-okdir(たとえば、GNU-findで利用可能)を使用して見つかったすべてのファイルに対してプログラムを実行すると、複数のファイルを一度にプログラムに渡すことができます(プログラムは複数のパラメータ呼び出しをサポートする場合)。 、";"代わりに「+」でコマンドを終了します。例:

find -name "*.pdf" -exec ls -l {} "+" 

これにより、全体的なプロセス速度が大幅に向上する可能性がありますが、個人の状況に応じて大部分が異なります。

答え3

使用locate

その理由は、locate既存のすべてのディレクトリとファイルのデータベースを使用するためです。すでに構築済み想像したまま!
http://linux.about.com/od/commands/l/blcmdl5_ locatedb.htm

特定の設定(および変更可能)間隔でジョブ実行はファイルシステムをスキャンし、それを使用してデータベースを構築します。これにより、コマンドはlocate現在のハードドライブを検索するのではなく、このデータベース(locatedb)とそのインデックスに対して機能します。

だから利益はこれです非常にハードディスクの検索に比べて高速です。欠点は、見つかったデータベース(locatedb)が「ライブ」ではないため、最後のチェック「現在」存在していたファイルにのみ使用できることです。

locatedbを更新するには、今すぐ実行してくださいupdatedb(またはsudo updatedb必要に応じて)。

さて、sudo updatedbローカルで実行したのに3 1/2秒かかりました! 31,000個のファイルがあります。

答え4

単一の検索操作の場合、optionsを使用して検索を絞り込んでいない限り、スピードが向上することを感じませんでしたfind

しかし、必要ならば。find同じファイルセットに対して複数のタスクを実行する;一時ファイルをすべてのファイル名で埋め、を使用しますgrep。もちろん、追加または削除されたファイルは考慮されません。

関連情報