「locate」コマンドを使用して、システム内のディレクトリを見つけたい。 「bench-repo」という名前のディレクトリがあることは知っています。私が次のコマンドを与えると、次のエラーが表示されます:
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
なぜこうなった?ディレクトリを見つけるにはどうすればよいですか?
locate
(/var/lib/mlocate/mlocate.db
)が使用するバイナリデータベースは、cron
によって毎日1回更新されるため、locate
は新しいファイルを検出しません。
これを修正するには、最初にSudo updatedb
を実行します
Sudo updatedb && locate -e bench-repo
-e
フラグを使用して、まだ存在するファイルのみを検索することをお勧めします。
ああ、ここにボーナスのヒントがあります-locate
を取得して、ls -l
に渡すことで詳細なリストを表示できます
ls -l $(locate -e bench-repo)
一般に、ファイルをlocate
できない場合、または最近作成された(最後のデータベース更新後)またはパスにないである場合updatedbは、エントリを検索するか、いくつかのプルーニングルールに一致します(以下を参照)。
新しいファイルまたはディレクトリの場合、十分な特権がある場合は更新を強制する:
Sudo updatedb
これによりすべてのみ許可されたパスに存在し、破棄されないファイルとディレクトリが更新されます(ケース2)。
ファイルがスキャンされたパス外 updatedbによって、または除外ルールに一致した場合、設定ファイルを変更してデータベースを更新できます:
Sudo pico /etc/updatedb.conf # manual update
Sudo updatedb
確かに、設定ファイル/etc/updatedb.conf
で、プルーニングされたファイル/ディレクトリのキーを見つけることができます。 PRUNENAMES
、PRUNEPATHS
、またはPRUNEFS
を検索し、結果的に変更してから、データベースを再度更新します。
locate
およびupdatedb
についてのいくつかの言葉ファイルまたはディレクトリをlocate
できるようにするには、実際にmlocateデータベースに含める必要があり、通常は/var/lib/mlocate/mlocate.db
。
このデータベースは定期的に更新です。デフォルトでは毎日更新され、/etc/cron.daily/mlocate
でcron
ファイルを見ることができます。存在しない場合は、locate mlocate | grep cron
で検索して、現在の場所と更新頻度を確認できます。
さらに読むには、man locate
およびman updatedb
を使用してください。
走る
Sudo updatedb
見つける前に。これにより、データベースが更新されます。