Linuxでファイルを検索するためのfind、locate、which、whereisコマンドの使用

Bg1

Linuxのターミナルからファイルを見つけて位置を特定する方法はいくつかあり、findlocatewhichwhereisはそのためによく使用されるコマンドの一部です。これらの4つの検索コマンド、その類似点と相違点を見てみましょう。

1. find

指定されたディレクトリ内でファイルを検索するための簡単なアプローチは、findコマンドを使用することです。検索を実行するディレクトリが明示的に指定されていない場合、検索は現在のディレクトリで実行されます。

以下のスクリーンショットは、現在のディレクトリ(.)内で、拡張子が.txtで終わるすべてのファイル名を検索する方法を示しています。

Compare Find

検索は、タイムスタンプ、ファイルの権限、ファイルサイズ、ファイルタイプ、ファイル所有者などに基づいても実行できます。正規表現を使用して検索パラメータを制御することができます。findコマンドの詳細な指示については、こちらを参照してください。

2. locate

このコマンドは、名前でファイルを見つける別の方法です。前のコマンドは指定されたディレクトリを検索し、その結果をユーザーに提供します。このツールは、「mlocate.db」と呼ばれるデータベースに対して検索を実行します。このデータベースは「/var/lib/mlocate/mlocate.db」にあります。このデータベースは、cronユーティリティによって毎朝更新されます。

このコマンドは、既存のデータベースに対して検索を行うため、findよりも迅速に実行されます。このデータベースは、システム上のすべてのファイルとディレクトリのリストをすでにキュレーションしています。

locateの後にファイル名を続けると、そのファイルが存在する絶対パス名が表示されます。

ホームディレクトリにスクリプトが作成されたと仮定しましょう。

新しく作成され、コピーされたスクリプトを見つけようとすると、出力は得られません。

locate myscript

cronは毎朝データベースを更新するため、日中にシステムに追加されたファイルは、データベースを手動で更新する必要があります。これは、updatedbコマンドを使用して行うことができます。

sudoupdatedb

カスタムスクリプトを「locate」しようとすると、ファイルを見つけることができます。

3. which

ファイルを検索するコマンドについて説明した後、システム上の実行可能ファイルの絶対パスを検索するのに役立つコマンドに移りましょう:which

1つの実行可能ファイル/スクリプト/バイナリは、システム内の複数の場所に存在する場合があります。whichは、指定された実行可能ファイルの存在を$PATHおよび$MANPATH環境変数で指定されたディレクトリ内で検索します。

スイッチなしで、whichは実行可能ファイルの最初の絶対パスを表示します。

-aスイッチは、指定された実行可能ファイルのために見つかった絶対パスのすべての出現を表示します。

複数の実行可能ファイルの絶対パスは、実行可能ファイルを1つずつ指定することで見つけることができます。

4. whereis

whereisは別のコマンドで、実行可能ファイルに関する3つの情報を取得するために使用されます:

  • バイナリの絶対パス
  • システム上にそのバイナリのソースコードが存在する絶対パス
  • そのバイナリのために存在するマニュアルの絶対パス

「bzgrep」の場合、バイナリは「/bin」に存在し、マニュアルは「/usr/share/man/man1」に存在します。そのソースコードはシステム上には存在しません。

whereisは、-bスイッチを使用してバイナリの絶対パスのみを検索するように指示できます。検索は、-Bスイッチの後にリストされたディレクトリ内でのみ実行されます。-fの後の名前は、情報を取得する必要があるすべてのバイナリを指定します。

同様に、検索はソースコードまたはマニュアルのみに制限することができ、-sおよび-mスイッチを使用します。-Sおよび-Mの後にディレクトリ名を指定すると、それぞれソースコードとマニュアルを検索するためのディレクトリが指定されます。

-lスイッチは、whereisが検索を実行するために使用するすべてのディレクトリの絶対パスの詳細なリストを提供します。

Compare Which Listing

結論

ターミナルでファイルを見つけて位置を特定するためのツールは不足していません。Linuxシステム上の4つの便利な検索ツールについて、今では良いアイデアを持っていることを願っています。使用方法についての詳細が必要な場合は、詳細なドキュメントのためにマニュアルページを確認できます。