コマンド
locate
ファイルをデータベースから検索する。
例えば locate a は
% find / -name '*a*' -print
と同じ働きをする。つまり、全ファイルシステムの中から、a という文字を含むファイル・ディレクトリ名を検索し、表示する。
しかし find と違い、locate はその場でディレクトリを検索するのではないので検索時間がかからない。あらかじめファイルシステム中の全ファイルをデータベースに記録しておき、そのデータベースを検索するので、数秒で検索が終了する。欠点は、データベースが更新された後にファイルの移動などをした場合、その情報がデータベースに反映されないことである、
FreeBSD の場合は、/etc/periodic/weekly/310.locate というスクリプトが週に1回実行され、その中で /usr/libexec/locate.updatedb が呼ばれて/var/db/locate.database が更新される。つまり週に一度だけデータベースが更新されることになる。なお、/etc/periodic/ を実行するのは cron デーモンである。
OS インストール直後はデータベースファイルが作成されていないので、直接 /usr/libexec/locate.updatedb を実行すればよい。本当は nobody 権限で実行するのが一番よいが、locate.updatedb(8) を参照。
なお、/etc/locate.rc を書き換えることで、あるディレクトリ以下は検索対象に含めない、という設定をすることもできる。
読み方
locate
(UNIXコマンド) [ろーけいと] [ろうけいと]
ファイル名の一部を与えるとフルパスを探すコマンド。locate は「場所を見つける」「探す」という英単語。