Locateハンドブック
表示
locateハンドブック
[編集]概要
[編集]locateコマンドは、ファイル名を迅速に検索するためのツールです。検索対象のファイルパスはあらかじめデータベースに格納されており、locateはそのデータベースを利用して効率的に検索を行います。このデータベースは通常、定期的に更新されます。
使用方法
[編集]以下はlocateコマンドの一般的な形式です:
locate [-0Scims] [-l limit] [-d database] pattern ...
- 主なオプション
-0: 出力をNULL文字で区切る(デフォルトは改行)。-S: データベースの統計情報を表示し、終了する。-c: マッチしたファイル数のみを出力。-d database: 指定したデータベースを検索(複数指定可)。-i: 大文字と小文字を区別しない。-l number: 出力を指定した数の結果に制限する。-m:mmap(2)を使用して検索を行う(デフォルト動作)。-s: 標準ライブラリ(stdio(3))を使用して検索。
データベースの更新
[編集]データベースの更新は通常、/usr/libexec/locate.updatedbで行われます。このスクリプトは/etc/periodic/weekly/310.locateから週に一度実行されます。
- 関連ファイル
-
/var/db/locate.database: デフォルトのデータベースファイル/etc/locate.rc: データベース更新の設定ファイル
データベースの構造
[編集]- データベースは、全てのファイルパスを辞書順にソートして格納します。
- 各ファイルパスは差分符号化(delta encoding)により効率的に格納されます。
- 隣接するエントリ間の共通プレフィックスの長さを記録。
- 共通部分以降のサフィックスのみを保存。
- バイナリ形式で格納され、圧縮が施されています。
使用例
[編集]- 特定のファイルを検索する:
locate myfile.txt
- 特定のデータベースを指定して検索する:
locate -d /path/to/database myfile
- 検索結果をカウントする:
locate -c myfile
- NULL区切りで出力する:
locate -0 myfile
制約
[編集]- データベースが更新されるまで最新のファイル情報は反映されません。
- データベースは読み取り可能なディレクトリのファイルのみを収録します。
- 異なるエンディアンのシステム間ではデータベースを共有できません。
- マルチバイト文字はサポートされていません。
参考文献
[編集]- Woods, James A., “Finding Files Fast”, ;login, 8:1, pp. 8-10, 1983.