web-dev-qa-db-ja.com

「whereis」、「locate」、および「find」コマンドの違い

Ubuntuのwhereislocateおよびfindコマンドの違いは何ですか?検索の観点からの基本的な違いは何ですか?

2
Avani badheka

GNU findutilsヘルプページ から

検索プログラムは、ディレクトリツリーを検索して、ファイルまたはファイルのグループを検索します。ディレクトリツリーを走査し、ユーザーの指定に一致するファイルのすべての出現を報告します。検索プログラムには、非常に強力な検索機能が含まれています。

位置特定プログラムは、ファイル名の1つ以上のデータベースをスキャンし、一致するものを表示します。最後のファイル名データベースの更新中にファイルが存在した場合、これは非常に高速な検索コマンドとして使用できます。

findは、特定の条件で検索し、ファイルを操作するときに使用するものです。 locateよりも多くのオプションがあるため、結果をよりきめ細かく制御できます。すべてのファイルで要求されたテストを実行して、一致するかどうかを確認するため、時間がかかります。

locateは、システム全体で何かをすばやくスキャンするために使用されます-何かがどこにあるかわからないとき、またはさまざまな未知の場所に散らばっているすべての関連ファイルを見つけたいときに使用します。バイナリデータベースを使用してシステムのインデックスを作成するため、高速です。新しいファイルを表示するには、最初にSudo updatedbcronによって1日に1回更新されたデータベースを実行します

whereisコマンドは、単に実行可能ファイル、マニュアルページ、およびプログラムのソースの場所を返します(man whereisを参照)

5
Zanna

大きな違いは、findは実際のファイルを特定のディレクトリで再帰的に検索するのに対し、locateは特定のディレクトリを必要とせずにデータベースを検索することです。したがって、データベースを更新する前にファイルを保存した場合、findはそれを検出しますが、locateは検出しません。

whereisおよびwhichについては、PATH変数で指定されているディレクトリ内と、実行許可が設定されているディレクトリ内のみを検索します

1