Linuxでの「検索」と「検索」の違いは何ですか?


41

Linuxに2つの非常に類似したコマンドがあるのはなぜですか?そして通常、それらのそれぞれを使用する状況は何ですか?


6
深さと完全さの両方のより良い答えについては、Unix&Linuxこの答えを参照してください。
そのブラジル人

回答:


38

find実際のシステムで検索します。遅くなりますが、常に最新であり、より多くのオプション(サイズ、変更時間など)があります

locate以前に構築されたデータベースを使用します(コマンドupdatedb)。はるかに高速ですが、「古い」データベースを使用し、名前またはその一部のみを検索します。

いずれにせよ、man find及びman locate更なるお手伝いをします。


1
...とupdatedb大体同じよういろいろ書いありませんfind / -type f | gzip > locate.gz
F.ハウリ

10
unix.stackexchange.com/questions/60205/…は、この質問にさらに詳しく答えます。
ナッツについてのナッツ

3

どちらlocatefindコマンドファイルを見つけることが、彼らは非常に異なる方法で動作します。

locate オフラインモードで動作します。

  • 簡単な説明として、slocateと呼ばれるUnixシステムのファイルインデックスデータベースには、Unixシステムに同梱されているすべてのファイルの場所がリストされます。を実行するとlocate、そのデータベースを使用して特定のファイルを検索します。問題は、locateあなたがちょうどあなたが今検索したいファイル、作成した場合である見つけるためではないでしょう仕事をslocateをデータベースが最新ではありませんが。この問題を解決updatedbするには、slocateデータベースの更新に使用できます。locate再度実行すると、新しく作成されたファイルが見つかります。したがって、多くのLinuxシステム管理者は、cronジョブを使用してslocateデータベースを定期的に更新します。

find オンライン/「リアルタイム」モードで動作します。

  • 実際にすべてのディレクトリを検索して指定された特定のファイルを見つけ、各ファイルを1つずつ調べます。したがって、多くのI / O呼び出しが必要です。

そのため、性質に基づいて、locateはfindよりも高速ですが、findはリアルタイムです。

これがアイデアのクリアに役立つことを願っています。ではごきげんよう。:)


0

locate データベースを検索し、ファイルの場所を報告するだけです。

find データベースを使用せず、すべてのディレクトリとそのサブディレクトリを走査し、指定された基準に一致するファイルを探します。


0

findを使用する代わりに、locateコマンドを使用できます。多くの場合、このコマンドはより高速で、ファイルシステム全体を簡単に検索できます。apt-getを使用してコマンドをインストールできます。

sudo apt-get update
sudo apt-get install mlocate

LocateがFindよりも高速な理由は、ファイルシステム上のファイルのデータベースに依存しているためです。データベースは通常、cronスクリプトを使用して1日に1回更新されますが、次のように入力して手動で更新できます。

sudo updatedb

今すぐこのコマンドを実行してください。最近取得または作成されたファイルを検索する場合、データベースは常に最新でなければなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.