Ubuntuのwhereis
、locate
およびfind
コマンドの違いは何ですか?検索の観点からの基本的な違いは何ですか?
検索プログラムは、ディレクトリツリーを検索して、ファイルまたはファイルのグループを検索します。ディレクトリツリーを走査し、ユーザーの指定に一致するファイルのすべての出現を報告します。検索プログラムには、非常に強力な検索機能が含まれています。
位置特定プログラムは、ファイル名の1つ以上のデータベースをスキャンし、一致するものを表示します。最後のファイル名データベースの更新中にファイルが存在した場合、これは非常に高速な検索コマンドとして使用できます。
find
は、特定の条件で検索し、ファイルを操作するときに使用するものです。 locate
よりも多くのオプションがあるため、結果をよりきめ細かく制御できます。すべてのファイルで要求されたテストを実行して、一致するかどうかを確認するため、時間がかかります。
locate
は、システム全体で何かをすばやくスキャンするために使用されます-何かがどこにあるかわからないとき、またはさまざまな未知の場所に散らばっているすべての関連ファイルを見つけたいときに使用します。バイナリデータベースを使用してシステムのインデックスを作成するため、高速です。新しいファイルを表示するには、最初にSudo updatedb
(cron
によって1日に1回更新されたデータベースを実行します
whereis
コマンドは、単に実行可能ファイル、マニュアルページ、およびプログラムのソースの場所を返します(man whereis
を参照)
大きな違いは、find
は実際のファイルを特定のディレクトリで再帰的に検索するのに対し、locate
は特定のディレクトリを必要とせずにデータベースを検索することです。したがって、データベースを更新する前にファイルを保存した場合、find
はそれを検出しますが、locate
は検出しません。
whereis
およびwhich
については、PATH変数で指定されているディレクトリ内と、実行許可が設定されているディレクトリ内のみを検索します