Linux環境で多くのファイルを管理していると、「あのファイルどこに保存したっけ?」ということが頻繁に起こります。そんなときに便利なのが、高速でファイル検索ができるlocate
コマンドです。find
コマンドと比べて格段に速く、コマンドひとつで目的のファイルを一瞬で見つけることができます。本記事では、locate
コマンドの基本的な使い方から、応用的なオプション、注意点までをわかりやすく解説します。Linuxを使いこなしたい方、日々の作業効率を上げたい方は必見です!
locateコマンドとは?
locate
コマンドは、Linuxで利用できるファイル名をキーワードで高速検索するためのコマンドです。検索のスピードが非常に速いのが特徴で、ファイルシステム全体を探索するfind
コマンドと比べて、圧倒的なパフォーマンスを発揮します。
この速さの理由は、locate
がファイルシステムを直接走査しているのではなく、あらかじめ作成されたファイル名データベース(mlocate.db
)を検索しているためです。このデータベースは定期的に更新され、最新のファイル情報を保持しています。
locateコマンドのインストール方法
多くのLinuxディストリビューションでは、locate
はデフォルトでインストールされていないこともあります。以下のように、パッケージマネージャーを使ってインストールできます。
Ubuntu / Debian 系の場合
sudo apt update
sudo apt install mlocate
CentOS / RHEL 系の場合
sudo yum install mlocate
インストール後は、以下のコマンドでファイルデータベースを初期化しておきましょう。
sudo updatedb
基本的な使い方
ファイル名を検索する
最も基本的な使い方は、次のようにファイル名の一部を指定して検索します。
locate ファイル名
例:
locate passwd
このようにすると、passwd
という文字列を含むすべてのファイルパスが表示されます。
ファイルパスが長すぎる場合の対応
たくさんの結果が出る場合は、less
やmore
と組み合わせると見やすくなります。
locate log | less
よく使うオプション
-i(大文字・小文字を区別しない)
locate -i filename
Filename
やfilename
など、大文字・小文字の区別なく検索してくれます。
-c(検索結果の件数だけ表示)
locate -c conf
これは、conf
を含むファイルが何件あるかだけを確認したいときに便利です。
–regex(正規表現での検索)
locate --regex '.*\.log$'
拡張子が.log
で終わるファイルを検索します。
データベースの更新について
locate
はデータベースに基づいて検索するため、新しく作成されたファイルはすぐには検索対象になりません。そのため、必要に応じて手動でデータベースを更新する必要があります。
sudo updatedb
このコマンドは、システム全体をスキャンして最新のファイルリストをデータベースに反映します。通常はcron
ジョブやsystemd
タイマーで定期的に実行されるよう設定されています。
locateとfindの違い
特徴 | locate | find |
---|---|---|
検索速度 | 非常に速い | 遅い(ファイルシステムを直接検索) |
検索対象 | データベースにあるファイル | 現在のファイルシステム |
検索内容 | ファイル名のみ | ファイルの属性や内容も指定可能 |
更新頻度 | updatedbで手動更新が必要 | 常に最新情報を対象に検索 |
つまり、「とにかく速くファイルを見つけたい」というときはlocate
が適しており、「特定の条件で詳細な検索をしたい」場合はfind
が有利です。
locateコマンドをさらに便利に使うテクニック
特定のディレクトリ配下のみを検索する
パイプとgrep
を組み合わせて、特定のディレクトリ配下だけを検索することも可能です。
locate config | grep '^/etc/'
これは、/etc/
以下にあるconfig
を含むファイルパスだけを抽出します。
ファイルの種類を絞り込み
locate '.log' | grep '\.log$'
このようにすることで、拡張子が.log
で終わるファイルだけを表示できます。
locateが検索しないファイルとは?
デフォルトでは、以下のようなパターンのファイルは検索対象外になることがあります。
- アクセス権限のないディレクトリ内のファイル
.updatedb.conf
で除外設定されたパス(例:/tmp
、/mnt
、/media
など)
設定ファイル /etc/updatedb.conf
を確認・編集することで、除外するパスやファイルシステムを変更できます。
まとめ
locate
コマンドは、Linuxでのファイル検索を劇的に効率化してくれる便利ツールです。インストールも簡単で、基本的な使い方を覚えるだけでも日々の作業効率は大きく向上します。
ただし、検索結果は常に最新とは限らないため、定期的にupdatedb
でデータベースを更新することを忘れないようにしましょう。また、find
コマンドとの使い分けをマスターすれば、より柔軟なファイル操作が可能になります。
Linuxをより快適に使いこなすために、locate
コマンドをぜひ活用してみてください。