Linuxで高速ファイル検索!locateコマンドの使い方と応用テクニック

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という文字列を含むすべてのファイルパスが表示されます。

ファイルパスが長すぎる場合の対応

たくさんの結果が出る場合は、lessmoreと組み合わせると見やすくなります。

locate log | less

よく使うオプション

-i(大文字・小文字を区別しない)

locate -i filename

Filenamefilenameなど、大文字・小文字の区別なく検索してくれます。

-c(検索結果の件数だけ表示)

locate -c conf

これは、confを含むファイルが何件あるかだけを確認したいときに便利です。

–regex(正規表現での検索)

locate --regex '.*\.log$'

拡張子が.logで終わるファイルを検索します。


データベースの更新について

locateはデータベースに基づいて検索するため、新しく作成されたファイルはすぐには検索対象になりません。そのため、必要に応じて手動でデータベースを更新する必要があります。

sudo updatedb

このコマンドは、システム全体をスキャンして最新のファイルリストをデータベースに反映します。通常はcronジョブやsystemdタイマーで定期的に実行されるよう設定されています。


locateとfindの違い

特徴locatefind
検索速度非常に速い遅い(ファイルシステムを直接検索)
検索対象データベースにあるファイル現在のファイルシステム
検索内容ファイル名のみファイルの属性や内容も指定可能
更新頻度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コマンドをぜひ活用してみてください。

タイトルとURLをコピーしました