web-dev-qa-db-ja.com

「locate」を使用してディレクトリを見つけられませんか?

「locate」コマンドを使用して、システム内のディレクトリを見つけたい。 「bench-repo」という名前のディレクトリがあることは知っています。私が次のコマンドを与えると、次のエラーが表示されます:

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

なぜこうなった?ディレクトリを見つけるにはどうすればよいですか?

9
tuxtu

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)
11
Zanna

2つは2つのアクションを引き起こします

一般に、ファイルをlocateできない場合、または最近作成された(最後のデータベース更新後)またはパスにないである場合updatedbは、エントリを検索するか、いくつかのプルーニングルールに一致します(以下を参照)。

  1. 新しいファイルまたはディレクトリの場合、十分な特権がある場合は更新を強制する

    Sudo updatedb 
    

    これによりすべてのみ許可されたパスに存在し、破棄されないファイルとディレクトリが更新されます(ケース2)。

  2. ファイルがスキャンされたパス外 updatedbによって、または除外ルールに一致した場合、設定ファイルを変更してデータベースを更新できます:

    Sudo pico /etc/updatedb.conf  # manual update
    Sudo updatedb
    

    確かに、設定ファイル/etc/updatedb.confで、プルーニングされたファイル/ディレクトリのキーを見つけることができます。 PRUNENAMESPRUNEPATHS、またはPRUNEFSを検索し、結果的に変更してから、データベースを再度更新します。

locateおよびupdatedbについてのいくつかの言葉

ファイルまたはディレクトリをlocateできるようにするには、実際にmlocateデータベースに含める必要があり、通常は/var/lib/mlocate/mlocate.db

このデータベースは定期的に更新です。デフォルトでは毎日更新され、/etc/cron.daily/mlocatecronファイルを見ることができます。存在しない場合は、locate mlocate | grep cronで検索して、現在の場所と更新頻度を確認できます。

さらに読むには、man locateおよびman updatedbを使用してください。

5
Hastur

走る

Sudo updatedb

見つける前に。これにより、データベースが更新されます。

2
PeeKay