概要
ファイルシステム全体を毎回たどるのではなく、索引化されたデータベースから名前検索します。高速ですが、直前に作成・削除したファイルは反映されていないことがあります。
基本構文
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分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
locateでbashやpasswdを検索し、findより先に候補を把握する使い方に慣れます。
-
-eの有無で結果の違いを見比べ、データベース検索の性質を理解します。
資格試験との関連
-
LinuC レベル1
範囲: 1.02.4 ファイルの配置と検索根拠: officiallocateは、ファイルの配置確認や検索に関わる学習項目です。
-
LPIC-1
範囲: 104.7 システムファイルの検索と適切な配置根拠: officiallocateは、システム上のファイルやコマンドを見つける技能と関係します。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editoriallocateは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。
実行結果サンプル
-
locate passwd | head/etc/passwd /usr/share/man/man5/passwd.5.gz ... -
locate -c systemd128
戻り値コード
- 0 正常終了。検索や件数表示に成功しました。
- >0 データベースがない、読取権限がない、不正なオプションなどで失敗しました。
使用例
locate passwdlocate -i sshlocate -c systemdlocate -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などで詳細が異なるためです。
参照リンク
- カテゴリー: File And Directory
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎