locate コマンドは、事前に作成された ファイルパスのデータベース を利用して、条件に一致するファイルを高速に検索するコマンドです。find より圧倒的に速く検索できる反面、データベースが最新でない場合は実際の状態と結果が異なることがあります。
構文(Syntax)
locate [オプション] パターン
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 指定した文字列を含むパスを検索 | locate passwd |
-i | 大文字小文字を無視して検索 | locate -i readme.txt |
-c | マッチ数のみ表示 | locate -c .log |
-r 正規表現 | 正規表現で検索 | locate -r '\.conf$' |
-l N | 表示件数を制限 | locate -l 10 .log |
-d DBPATH | 特定のデータベースを指定 | locate -d /tmp/mlocate.db passwd |
-e | 実在するファイルのみ表示 | locate -e passwd |
-S | データベースの統計情報を表示 | locate -S |
※ データベースは通常 updatedb コマンドで更新します。
実行例
passwd を含むパスを検索
locate passwd
出力例:
/etc/passwd
/usr/share/doc/passwd/README
大文字小文字を無視して README を検索
locate -i readme.txt
.log ファイルの件数だけ表示
locate -c .log
出力例:
123
正規表現で .conf ファイルを検索
locate -r '\.conf$'
上位10件だけ表示
locate -l 10 .log
データベースの統計情報を確認
locate -S
出力例:
Database /var/lib/mlocate/mlocate.db:
123456 directories
987654 files
エラー例(データベース未更新)
locate testfile
出力例:
locate: database '/var/lib/mlocate/mlocate.db' is more than 8 days old
関連コマンド
find: 実際のディレクトリをリアルタイムに検索(遅いが確実)updatedb:locateのデータベースを更新grep: ファイル内容を検索which: コマンドの実行ファイルの場所を表示
備考
locateはデータベース検索なので非常に高速。- データベース更新は通常 cron や systemd タイマーで自動実行されるが、手動で
sudo updatedbすることも可能。 - データベースに登録されるのは「検索時点で存在していたファイル」であり、削除済みファイルが残って見つかることもある。
- 一般ユーザーには権限のある範囲しか表示されない。
参考
- manページ: man7.org locate(1)
- GNU findutils: https://www.gnu.org/software/findutils/

コメント