No.031ファイルとフォルダ
locate
ロケート・ファイル名検索
ファイルシステム全体を毎回たどるのではなく、索引化されたデータベースから名前検索します。高速ですが、直前に作成・削除したファイルは反映されていないことがあります。
答えよく使う形
$ locate passwd | head
/etc/passwd /usr/share/man/man5/passwd.5.gz ...
$ locate -c systemd
128
$ locate passwd
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中でLPIC-1・10 駅め / 106
どんなコマンド?
ファイル名の候補を素早く洗い出したい時、設定ファイルやコマンド関連ファイルの場所を概観したい時、名前の一部しか覚えていないファイルを探したい時に使います。
locateは、ファイル名やパス名を高速に探すためのコマンドです。findのように実際のディレクトリをたどって探すのではなく、updatedbなどで作られた索引を検索します。そのため、大規模なシステムでも非常に素早く候補を一覧できます。
最大の利点は速度ですが、同時に最大の弱点は鮮度です。データベースが古いと、既に消えたファイルが表示されたり、新しく作ったファイルが見つからなかったりします。そのためlocateの結果は「候補一覧」として使い、必要なら-eやls、statで現存確認を行います。
実装にも差があります。現代のディストリビューションではplocate、mlocate、findutils版locateなど複数系統があり、使えるオプションや既定動作が少し異なることがあります。記事では、まず「データベース検索である」という原則を押さえるのが重要です。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ locate
使用例と実行結果
行を押すとコピーできます。
/etc/passwd /usr/share/man/man5/passwd.5.gz ...
128
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 2
つまずいたとき
作ったばかりのファイルがlocateで見つからない
原因データベース更新前で、最新状態が反映されていません。
こうするupdatedbの実行時期を確認し、必要ならfindで直接探します。
locateに出たのに実体が存在しない
原因古い索引が残っています。
こうする-eで現存確認を行うか、lsやstatで検証します。
終わったときの数(戻り値)
$ echo $?
- 0正常終了。検索や件数表示に成功しました。
- >0データベースがない、読取権限がない、不正なオプションなどで失敗しました。
気をつけることと入れ方
危険度は低いですが、検索結果を現存保証と誤解すると事故のもとです。削除済みの候補が出ることや、新規作成分が未反映であることを常に意識してください。
環境による違い
locateは実装差が大きく、findutils版、mlocate系、plocate系で細かなオプションが異なります。多くの環境で高速検索という役割は共通ですが、記事では「データベース依存」「未導入環境がある」の二点を明記するのが安全です。
確かめた環境2026-04-09 に確認
よくある質問
locateとfindは何が違いますか。
locateは索引検索で速く、findは実ファイルシステムをたどるので条件指定と鮮度に強いです。
なぜ環境によって結果やオプションが違うのですか。
実装が複数あり、plocateやmlocateなどで詳細が異なるためです。
資格試験では
- LinuC レベル1大事1.02.4 ファイルの配置と検索locateは、ファイルの配置確認や検索に関わる学習項目です。
- LPIC-1大事104.7 システムファイルの検索と適切な配置locateは、システム上のファイルやコマンドを見つける技能と関係します。
- 共通基礎大事Linuxコマンド基礎
locate を最後まで読みました。
Linux コマンド辞典に戻る54 / 144