回答:
検索条件に大きく依存します。
使用されるインデックスは、通常、1日1回のみ更新されるため、あなたは、ファイル名やファイル名のパターンを検索見つけた場合は、新鮮に生成されたファイルに適してはるかに高速ですが、ありません。ただし、使用できる場合は、非常に高速です。
ただし、findを使用すると、locateでは検索できないファイルサイズ、ファイル経過時間などを検索できます。
検索する場所がわかっている場合は、パスを使用して検索範囲を区切ることができます。
find /some/path -size -10M -size +2M -mtime -365 ...
/ some / pathで最大1年前の2〜10 Mのファイルのみを検索します。
パスで利用可能なプログラムは、whereisでwhich、help、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
使用する locate
理由は、あなたが想像したとおりにすでに構築されているlocate
すべての既存のディレクトリとファイルのデータベースを使用するからです!http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm
一定の(および変更可能な)間隔で、ジョブの実行によりファイルシステムがスキャンされ、それを使用してデータベースが構築されます。次に、このデータベース(locatedb)に、適切なインデックスを使用して、locate
その時点でハードドライブをスキャンする代わりに、コマンドの対象になります。
そのため、ハードドライブスキャンと比較して非常に高速であるという利点があります。欠点は、ロケートデータベース(locatedb)が「ライブ」ではないため、最後のスキャンの時点で存在していたファイルにのみ使用できることです。
現在、locatedbを更新するにはupdatedb
(またはsudo updatedb
必要に応じて)
ところで私はちょうどsudo updatedb
ローカルで走った、それは3 1/2秒かかりました!31,000個のファイルがあります。