web-dev-qa-db-ja.com

ターミナルの「locate」コマンド。なぜこんなに速いのですか?

locateコマンドを使用してLinuxターミナルでキーワードを検索すると、短時間で答えが得られます。使用される検索アルゴリズムは何ですか?

7
algosig

システムは、コンピューター内のすべてのファイルのデータベースを作成します。したがって、locateで検索すると、コマンドは実際にはファイルシステム全体ではなくデータベースのみをチェックし、辞書でWordを検索するような高速なバイナリ検索アルゴリズムを実行します。それがとても速い(そして便利な)理由です。

このようなデータベースは定期的に更新されます。新しいパッケージをインストールすると、時々動作することがあります:updating mlocate...。ターミナルで実行することにより、それがどのように機能するかについての詳細情報を見つけることができます:

man locate

man updatedb
9

データベースを使用します。デフォルトで検索されるデータベースは次の場所にあります。

/var/lib/mlocate/mlocate.db

Locateの欠点は、リアルタイムではないことです。

Manページから:

説明Locateは、updatedb(8)によって準備された1つまたは複数のデータベースを読み取り、少なくとも1つのパターンに一致するファイル名を1行に1つずつ標準出力に書き込みます。

4
Rinzwind