Linux / コマンド / which, whereis, locate / コマンドの場所を探す
Linux では、which は主に PATH 内の実行可能ファイルを見つけるために使用され、whereis は決められた場所の実行可能ファイルやマニュアルなどの関連ファイルを探します。locate は事前に作成されたファイル名データベースを検索するため、通常のファイルも素早く見つけることができますが、結果は現在の状態と異なる場合があります。
どのコマンドを使用すべきですか?
- 実行可能ファイルのパス: 現在の環境でどのコマンドが見つかるかを確認するには、
which findまたはシェルのcommand -v findを使用してください。 - 実行可能ファイルとマニュアル: プログラムと関連マニュアル/ソースが既知の場所にあるかどうかを確認するには、
whereis findを使用してください。 - ファイル名で検索:
locateは索引付けされたパスを検索します。最新の情報が必要な場合は、findを使用して指定したディレクトリを直接検索することができます。
検索範囲と結果は、ディストリビューション、インストールされているプログラム、ユーザー権限、設定によって異なります。以下の出力パスは説明の目的での例であり、すべてのシステムで同じとは限りません。
whichコマンドやcommand -vコマンドで実行可能ファイルを確認します
PATHは、実行するコマンドを探す際に検索するディレクトリのリストを含む環境変数です。以下のコマンドは、findという名前の実行可能ファイルのパスを検索します。
which find
たとえば、/usr/bin/findが出力される場合があります。パスが出力されない場合は、プログラムがインストールされているかどうかを確認し、PATHを検証してください。ただし、whichやエイリアスの処理はシステムによって異なるため、現在のシェルが名前をどのように解釈するかを確認するために組み込みシェルコマンドを確認することも良い方法です。
command -v find
type -a find
Bashでは、command -vはコマンドを呼び出すために使用された名前またはパスを表示し、type -aはエイリアス、関数、組み込みコマンド、その名前を持つ実行可能ファイルなど、見つかった項目を表示します。シェルの組み込みコマンドやエイリアスは、個別の実行可能ファイルパスを持たない場合があります。その動作はBash組み込みコマンドの説明で確認できます。
whereisで関連ファイルを見つける
whereisは、プログラムの実行可能ファイル、ソース、マニュアルファイルを標準の場所および設定された検索パスで検索します。
whereis find
結果にはfind:の後に見つかったパスが一覧表示されます。実行可能ファイルのみを表示したい場合はwhereis -b findを使用できます。マニュアルファイルのみを表示したい場合はwhereis -m findを使用できます。ファイルがインストールされていない場合や検索パスの外にある場合は表示されませんので、出力がないからといって必ずしもシステム上にファイルが存在しないとは限りません。
util-linuxでは、whereis -lが検索場所を表示します。検索範囲の詳細については、 util-linux whereis ドキュメント を参照してください。
locateを使用したファイル名の検索
locateは、updatedbによって作成されたデータベース内で、名前やパスに一致するエントリを検索します。例えば、次のコマンドはインデックス化されたパス内でfindを含むエントリを見つけます。
locate find
出力には実行可能ファイルだけでなく、マニュアルや他の名前のファイルも含まれることがあります。オプションはインストールされている実装によって異なる場合があるため、まずlocate --helpを確認してください。例えば、plocateでは、結果を最大10件までに制限することができます。
locate -l 10 find
データベースが古い場合、新しいファイルが見つからなかったり、すでに削除されたパスが残っていたりすることがあります。検索から除外されたパスやユーザーのアクセス権も結果に影響します。ディストリビューションは定期的にデータベースを更新することがあり、システム管理が許可されている環境ではsudo updatedbで直接更新できます。これは広範なシステムディレクトリをスキャンする場合があるため、実行前に管理方針を確認してください。実装や関連マニュアルはplocate公式ドキュメントにあります。
インストール状況と最新ファイルを確認する
locate がインストールされていない可能性があります。例えば、Ubuntu 24.04 plocate パッケージ を使用でき、管理者権限とパッケージリポジトリへのアクセスがある環境では、以下のようにインストールできます。
sudo apt update
sudo apt install plocate
他のディストリビューションやバージョンでは、パッケージ名や更新方法が異なる場合があるので、それぞれのディストリビューションのドキュメントを参照してください。インストール後にデータベースが存在しない場合や最新でない場合、管理者が初期化や更新を行う必要があるかもしれません。
データベースを待たずに、ホームディレクトリ内の現在のファイルを直接見つけるには、次の手順を実行します:
find "$HOME" -name 'example.txt'
このコマンドは指定されたディレクトリツリーを直接検索するため、locate より時間がかかる場合があり、アクセス権限のないディレクトリを検索することはできません。example.txt を探している実際のファイル名に置き換え、検索パターンが事前にシェルによって展開されないように引用符はそのままにしてください。




