このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:ファイル名データベースからファイルを探す:locateコマンド

ファイル名データベースからファイルを探す:locateコマンド
locate
コマンドは、パス名の一部を指定してファイルを高速に検索するためのコマンドです。これは、事前に作成されたファイル名データベースを参照することで、ディスク全体をスキャンするfind
コマンドに比べて非常に迅速に検索を行うことができます。
しかし、locate
コマンドはデフォルトでインストールされていないLinuxディストリビューションも多いため、まずはインストール手順から確認していきましょう。

locateコマンドのインストール
インストールの確認
まず、locate
コマンドがシステムにインストールされているか確認します。ターミナルで以下のコマンドを実行してください。
user01@ubuntu:~$ locate
もし、以下のようなメッセージが表示された場合、locate
コマンドはインストールされていません。
コマンド 'locate' が見つかりません。次の方法でインストールできます:
sudo apt install plocate
インストール手順
Ubuntu
の場合、locate
コマンドはplocate
というパッケージに含まれています。以下のコマンドを実行してインストールします。
user01@ubuntu:~$ sudo apt install plocate
[sudo] user01 のパスワード:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
liburing2
以下のパッケージが新たにインストールされます:
liburing2 plocate
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 31 個。
160 kB のアーカイブを取得する必要があります。
この操作後に追加で 623 kB のディスク容量が消費されます。
続行しますか? [Y/n]
ポイント
sudo
を使用しているため、パスワードの入力が求められます。Y
を入力してインストールを進めます。
データベースの作成
インストール直後は、ファイルパスのデータベースがまだ作成されていないため、検索を行うことができません。データベースを作成するには、updatedb
コマンドを実行します。
user01@ubuntu:~$ sudo updatedb
注意
updatedb
コマンドは、システム上の全ファイルパスをデータベースに登録します。- 通常、
locate
コマンドをインストールすると、updatedb
が定期的(1日1回)に自動実行されるように設定されます。
ファイルの検索
locate
コマンドを使用して、実際にファイルを検索してみましょう。
【書式】locate [オプション] <検索パターン>
使用例:「bash」という文字列を含むパス名を検索する
user01@ubuntu:~$ locate bash
/etc/bash.bashrc
/etc/bash_completion
/etc/apparmor.d/abstractions/bash
/etc/profile.d/bash_completion.sh
/etc/skel/.bash_logout
/etc/skel/.bashrc
/home/user01/.bash_history
/home/user01/.bash_logout
/home/user01/.bashrc
...(以下省略)...
ポイント
locate
コマンドは、検索パターンに一致するすべてのパス名を高速に表示します。- 検索結果には、ファイル名だけでなく、ディレクトリ名も含まれます。
findコマンドとの比較
find
コマンドとlocate
コマンドの主な違いを理解しておきましょう。
比較表
コマンド | 検索方法 | 検索速度 | データの新鮮さ |
---|---|---|---|
find | ディレクトリツリーを直接検索 | 遅い(ファイル数に依存) | 常に最新 |
locate | ファイル名データベースを検索 | 非常に速い | 更新頻度に依存 |
解説
find
コマンドは、実行時にディスクを直接スキャンするため、大量のファイルがある場合には時間がかかりますが、常に最新の情報を取得できます。locate
コマンドは、事前に作成されたデータベースを検索するため、高速に結果を得られますが、データベースの更新頻度によっては最新の情報が反映されていない場合があります。
注意点
locate
コマンドを使用する際には、以下の点に注意が必要です。
データベースの更新タイミング
- デフォルトでは、
locate
コマンドのデータベースは1日1回自動更新されます。 - そのため、直近で作成・削除したファイルはデータベースに反映されていない可能性があります。
実際のファイルの存在
locate
コマンドで表示されたファイルが、実際には削除されて存在しない場合があります。- 逆に、データベース未更新のため、実際には存在するのに検索結果に表示されないファイルもあります。
データベースの手動更新
最新のファイル情報を検索したい場合は、手動でデータベースを更新する必要があります。
user01@ubuntu:~$ sudo updatedb
さまざまな検索方法の指定
locate
コマンドでは、検索パターンを指定してファイルを検索します。以下に、より高度な検索方法とその使い方を紹介します。
ワイルドカードを使用した検索
検索パターンには、find
コマンドと同様にワイルドカードとして *
や ?
を利用できます。
*
:任意の文字列(0文字以上)?
:任意の1文字
例:拡張子が .sed
のファイルを検索
user01@ubuntu:~$ locate '*.sed'
/snap/gnome-42-2204/176/usr/share/gettext/po/boldquot.sed
/snap/gnome-42-2204/176/usr/share/gettext/po/quot.sed
/usr/share/doc/sed/examples/dc.sed
/usr/share/groff/1.23.0/font/devps/generate/symbol.sed
ポイント
- パターンを
'
(シングルクォート) または"
(ダブルクォート) で囲む必要があります。これは、シェルによるパス名展開を防ぐためです。
大文字小文字を区別しない検索(-i
オプション)
デフォルトでは、locate
コマンドは大文字と小文字を区別して検索します。大文字小文字を無視して検索したい場合は、-i
または --ignore-case
オプションを使用します。
例:notes
(大文字小文字を区別しない)を含むファイルを検索
user01@ubuntu:~$ locate -i notes
/snap/gnome-42-2204/176/usr/lib/python3/dist-packages/markdown/extensions/footnotes.py
/snap/gtk-common-themes/1535/share/icons/HighContrast/16x16/apps/fedora-release-notes.png
/snap/gtk-common-themes/1535/share/icons/HighContrast/22x22/apps/fedora-release-notes.png
...(以下省略)...
ポイント
notes
やNOTES
、Notes
など、大文字小文字の違いを無視して検索結果に表示されます。
ファイル名だけを対象に検索(-b
オプション)
通常、locate
コマンドはパス名全体を検索対象とします。ファイル名(ベースネーム)のみを検索対象にしたい場合は、-b
または --basename
オプションを使用します。
例:ファイル名に python
を含むファイルを検索
user01@ubuntu:~$ locate -b python | less
/etc/python3
/etc/python3.12
/etc/apparmor.d/abstractions/python
/snap/core22/1612/etc/python3.10
...(以下省略)...
ポイント
less
コマンドを使用して、長い出力結果をページ単位で閲覧できます。終了するにはq
キーを押します。-b
オプションにより、ファイル名そのものにpython
を含むファイルだけが表示されます。途中のディレクトリ名にpython
が含まれていても、ファイル名に含まれていなければ表示されません。
複数の検索パターンを指定(OR検索)
locate
コマンドでは、複数の検索パターンを同時に指定できます。この場合、少なくとも1つのパターンに一致するファイルが検索結果に表示されます(OR検索)。
例:docs
または list
を含むファイルを検索
user01@ubuntu:~$ locate docs list
/var/lib/dpkg/info/gnome-user-docs-ja.list
/var/lib/dpkg/info/gnome-user-docs.list
/var/lib/dpkg/info/ubuntu-docs.list
/var/lib/dpkg/info/xorg-docs-core.list
ポイント
docs
またはlist
のどちらかを含むファイルが表示されます。- 複数の検索パターンをスペースで区切って指定します。
複数の検索パターンすべてに一致する検索(AND検索)
複数の検索パターンを指定して、それらすべてに一致するファイルを検索したい場合は、-A
または --all
オプションを使用します(AND検索)。
例:bash
と doc
の両方を含むファイルを検索
user01@ubuntu:~$ locate -A bash doc
/snap/core22/1612/usr/share/bash-completion/completions/asciidoc
/snap/core22/1612/usr/share/bash-completion/completions/asciidoc.py
/snap/core22/1612/usr/share/bash-completion/completions/javadoc
...(以下省略)...
ポイント
- ファイルパス名に
bash
とdoc
の 両方 が含まれるファイルのみが表示されます。 - AND検索を行うことで、より絞り込んだ検索が可能になります。
まとめ
locate
コマンドは、ファイル名データベースを利用して高速にファイルを検索できる便利なコマンドです。- インストールと初期設定
・システムにlocate
コマンドがない場合は、sudo apt install plocate
でインストールします。
・インストール直後はsudo updatedb
でデータベースを作成します。 - 使用上の注意
・データベースは定期的に自動更新されますが、最新のファイル情報を反映させたい場合は手動でupdatedb
を実行します。
・locate
コマンドの結果が実際のファイルシステムと一致しない場合があることを認識しておきましょう。
効果的な活用法
- 過去に作成したファイルの検索:しばらく前に作成したファイルを高速に探したい場合に有効です。
- システム全体のファイル検索:特定のファイル名やパターンに一致するファイルを、迅速にリストアップできます。
locate
コマンドを効果的に活用することで、大量のファイルの中から目的のファイルを迅速に見つけ出すことができます。さまざまなオプションを組み合わせて、ニーズに合わせた検索を行いましょう。