locate ロケート

英語表記locate

日本語表記ファイル名検索

正式名称locate

危険度安全

What does it mean?

ファイルシステム全体を毎回たどるのではなく、索引化されたデータベースから名前検索します。高速ですが、直前に作成・削除したファイルは反映されていないことがあります。

Command Quest

locate を今日の道具にする

ファイルシステム全体を毎回たどるのではなく、索引化されたデー...

$ locate [オプション]... パターン...
関連用語0
次のコマンド0
FAQ2
参照4

概要

ファイルシステム全体を毎回たどるのではなく、索引化されたデータベースから名前検索します。高速ですが、直前に作成・削除したファイルは反映されていないことがあります。

基本構文

locate [オプション]... パターン...

詳細解説

locateは、ファイル名やパス名を高速に探すためのコマンドです。findのように実際のディレクトリをたどって探すのではなく、updatedbなどで作られた索引を検索します。そのため、大規模なシステムでも非常に素早く候補を一覧できます。

最大の利点は速度ですが、同時に最大の弱点は鮮度です。データベースが古いと、既に消えたファイルが表示されたり、新しく作ったファイルが見つからなかったりします。そのためlocateの結果は「候補一覧」として使い、必要なら-eやls、statで現存確認を行います。

実装にも差があります。現代のディストリビューションではplocate、mlocate、findutils版locateなど複数系統があり、使えるオプションや既定動作が少し異なることがあります。記事では、まず「データベース検索である」という原則を押さえるのが重要です。

このコマンドを使う場面

ファイル名の候補を素早く洗い出したい時、設定ファイルやコマンド関連ファイルの場所を概観したい時、名前の一部しか覚えていないファイルを探したい時に使います。

まず安全に試す方法

1. locate passwd
2. locate -c passwd
3. locate -i ssh
4. locate -e passwd

データベース由来の結果であることを理解し、-eで現存確認が絞り込みに使えることを確認します。

3分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. locateでbashやpasswdを検索し、findより先に候補を把握する使い方に慣れます。

  2. -eの有無で結果の違いを見比べ、データベース検索の性質を理解します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.02.4 ファイルの配置と検索
    根拠: official
    locateは、ファイルの配置確認や検索に関わる学習項目です。
  • LPIC-1
    範囲: 104.7 システムファイルの検索と適切な配置
    根拠: official
    locateは、システム上のファイルやコマンドを見つける技能と関係します。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    locateは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。

オプション

  • -i
    大文字小文字を区別せずに検索します。
    locate -i ssh
  • -c
    一致件数だけを表示します。
    locate -c passwd
  • -e
    現在も存在する項目だけを表示します。
    locate -e bashrc

実行結果サンプル

  • locate passwd | head
    /etc/passwd
    /usr/share/man/man5/passwd.5.gz
    ...
  • locate -c systemd
    128

戻り値コード

  • 0 正常終了。検索や件数表示に成功しました。
  • >0 データベースがない、読取権限がない、不正なオプションなどで失敗しました。

使用例

  • locate passwd
  • locate -i ssh
  • locate -c systemd
  • locate -e updatedb.conf

よくあるエラー

  • 作ったばかりのファイルがlocateで見つからない
    原因: データベース更新前で、最新状態が反映されていません。
    対処: updatedbの実行時期を確認し、必要ならfindで直接探します。
  • locateに出たのに実体が存在しない
    原因: 古い索引が残っています。
    対処: -eで現存確認を行うか、lsやstatで検証します。

導入・互換性情報

locateは実装差が大きく、findutils版、mlocate系、plocate系で細かなオプションが異なります。多くの環境で高速検索という役割は共通ですが、記事では「データベース依存」「未導入環境がある」の二点を明記するのが安全です。

注意点 / セキュリティリスク

危険度は低いですが、検索結果を現存保証と誤解すると事故のもとです。削除済みの候補が出ることや、新規作成分が未反映であることを常に意識してください。

FAQ

  • Q. locateとfindは何が違いますか。
    A. locateは索引検索で速く、findは実ファイルシステムをたどるので条件指定と鮮度に強いです。
  • Q. なぜ環境によって結果やオプションが違うのですか。
    A. 実装が複数あり、plocateやmlocateなどで詳細が異なるためです。

参照リンク

関連記事