locate – データベースを使って高速にファイルを検索するコマンド

検索・探索

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 することも可能。
  • データベースに登録されるのは「検索時点で存在していたファイル」であり、削除済みファイルが残って見つかることもある
  • 一般ユーザーには権限のある範囲しか表示されない。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント