Linux, コマンド · 1 min read · Sep 17, 2025

初心者のためのLinux Locateコマンド (8つの例)

Linuxのlocateコマンドは、名前に基づいてファイルやディレクトリを迅速に見つけるための強力なユーティリティです。これは、通常updatedbコマンドによって定期的に更新される事前構築されたデータベースを利用して、迅速な検索を行うため、findのような他の検索ツールよりも大幅に速くなります。ユーザーがlocateコマンドを発行し、検索パターンを続けて入力すると、ファイルシステム自体ではなくこのデータベースをスキャンし、ほぼ瞬時に結果を提供します。これにより、locateはシステム管理者や、ライブファイルシステムスキャンのオーバーヘッドなしにファイルを迅速に見つける必要があるユーザーにとって特に便利です。ただし、locateの精度はデータベースがどれだけ頻繁に更新されるかに依存します。次の更新までファイルシステムの最新の変更を反映しない可能性があります。

このチュートリアルでは、理解しやすい例を用いてlocateコマンドを説明します。ここで言及されているすべての指示/例は、Ubuntu 24.04でテストされています。

1. locateコマンドのインストール

locateコマンドは、UbuntuおよびDebian Linuxにはプリインストールされていません。次のコマンドを使用してインストールできます:

sudo apt install locate

locateコマンドのインストール

locateは、事前にコンパイルされたファイル名データベースに基づいてファイル検索を行うため、後続の検索を行う際にfindコマンドよりもはるかに速くなります。しかし、使用する前に、ファイルデータベースを作成して更新する必要があります。次のコマンドを実行してlocateデータベースを作成します:

sudo updatedb

これでlocateを使用する準備が整いました。

2. Linuxでlocateコマンドを使用する方法

locateコマンドは非常に使いやすいです。検索したいファイル名を渡すだけです。

locate [filename]

たとえば、’dir2’という文字列を含むすべてのファイル名を検索したい場合、次のようにlocateを使用できます:

注意:コマンド’locate dir2’(アスタリスクなし)でも動作します。locateは渡された名前(例えばNAME)をNAMEに暗黙的に置き換えます。

3. locateコマンドがどのように機能するか、または、なぜそれがそんなに速いのか

locateが非常に速いのは、検索されたファイルやディレクトリ名のためにファイルシステムを読み取らないからです。ユーザーが探しているものを見つけるために、updatedbコマンドによって準備されたデータベースを参照し、その検索に基づいて出力を生成します。

これは良いアプローチですが、欠点もあります。主な問題は、システム上に新しいファイルやディレクトリが作成されるたびに、ツールのデータベースを更新する必要があることです。そうしないと、コマンドは最後のデータベース更新後に作成されたファイル/ディレクトリを見つけることができません。

たとえば、私がシステムの’Downloads’ディレクトリ内で’tosearch’文字列を含むファイルを見つけようとすると、findコマンドは出力に1つの結果を生成します:

しかし、同じ検索をlocateコマンドを使用して実行すると、出力は何も表示されません。

これは、locateが検索するデータベースが、システム上でファイルが作成された後に更新されていなかったことを意味します。では、データベースを更新しましょう。これはupdatedbコマンドを使用して行うことができます。以下のようにします:

sudo updatedb

そして、同じlocateコマンドを再度実行すると、出力にファイルが表示されます:

同様に、ファイルやディレクトリが削除された後は、locateデータベースが更新されていることを確認する必要があります。そうしないと、コマンドは検索時に出力にそのファイルを表示し続けます。

4. locateが出力内の一致するエントリの数またはカウントを印刷するようにする方法

これまで見てきたように、locateコマンドは一致したファイルの名前とその完全または絶対パスを出力に生成します。しかし、必要に応じて、ツールを使用してこの情報を抑制し、一致するエントリの数またはカウントのみを印刷することもできます。これは、-cコマンドラインオプションを使用して行うことができます。

5. locateが既存のファイルに対応するエントリのみを印刷するように強制する方法

この記事の前半で既に議論したように、システムからファイルが削除されると、locateデータベースを再度更新するまで、コマンドは出力にそのファイル名を表示し続けます。しかし、この特定のケースでは、データベースを更新せずに、-eコマンドラインオプションを使用して出力に正しい結果を得ることができます。

たとえば、私はシステムから’filetosearch.txt’ファイルを削除しました。これは、ファイルを検索できなくなったfindコマンドによって確認されました:

しかし、同じ操作をlocateを使用して実行すると、出力にまだそのファイルが表示されていました:

そして、私たちはなぜそれが起こったのかを知っています - locateのデータベースはファイルが削除された後に更新されていなかったからです。しかし、-eオプションを使用すると、うまくいきました:

locateのマニュアルページには、このオプションについて次のように記載されています:「locateが実行される時点で存在するファイルを参照するエントリのみを印刷します。」

6. locateが大文字と小文字の区別を無視するようにする方法

デフォルトでは、locateコマンドが実行する検索操作は大文字と小文字を区別します。しかし、-iコマンドラインオプションを使用して、ツールに大文字と小文字の区別を無視させることができます。

たとえば、私のシステムには’newfiletosearch.txt’と’NEWFILETOSEARCH.txt’という2つのファイルがあります。ご覧のとおり、ファイル名は同じですが、大文字と小文字が異なります。たとえば、locateに’tosearch‘を検索させると、出力には小文字の名前のみが表示されます:

しかし、-iコマンドラインオプションを使用すると、コマンドは大文字と小文字の区別を無視し、両方のファイル名が出力に表示されます:

7. 出力エントリをASCII NULで区切る方法

デフォルトでは、locateコマンドが生成する出力エントリは改行(\n)文字を使用して区切られます。しかし、必要に応じて、区切り文字を変更し、改行の代わりにASCII NULを使用することができます。これは、-0コマンドラインオプションを使用して行うことができます。

たとえば、上記の最後のセクションで使用したのと同じコマンドを実行しましたが、-0コマンドラインオプションを追加しました:

これで、改行区切りがなくなり、NULに置き換えられたことがわかります。

8. locateデータベースに関する情報を表示する方法

locateが使用しているデータベースや、データベースに関する他の統計情報を知りたい場合は、-Sコマンドラインオプションを使用します。

9. locateを使用して正確なファイル名を検索する方法

デフォルトでは、locateを使用してファイル名を検索すると、渡された名前 - 例えばNAME - は暗黙的にNAMEに置き換えられます。たとえば、ファイル名’testfile’を検索すると、出力にはすべてのtestfileに一致する名前が表示されます:

locateを使用して正確なファイル名を検索

しかし、要件が’testfile’と正確に一致する名前のファイルを検索することである場合、正規表現を使用する必要があります。これは、-rコマンドラインオプションを使用して有効にできます。では、正規表現を使用して’testfile’を検索する方法は次のとおりです:

locate -r /testfile$

正規表現に不慣れな方は、こちらをご覧ください。別のディレクトリに移動するには、シェルのcdコマンドを使用できます。

結論

locateはさらに多くのオプションを提供していますが、ここで説明したものは、コマンドラインユーティリティについての基本的なアイデアを提供し、始めるのに十分であるはずです。ここで説明したすべてのオプションをLinuxマシンで試してみることをお勧めします。その後、ツールのマニュアルページで見つけられる他のオプションに切り替えてください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。