Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

環境構築で最も役に立ったlocateコマンドを紹介する

前書き

環境構築をしていた中で最も活躍したと思われるlocateコマンドのインストール方法とその使い方について紹介します。

locateコマンドとは

lcoateコマンドとは検索用のデータベースを構築することでfindコマンドより高速にファイルやディレクトリを検索することのできるコマンドです。

locateコマンドの使い方

使い方は簡単です。以下のようにすると.zprofileファイルを検索することができます。1

% locate .zprofile

他にもオプションがあるので、詳しくはmanコマンドで調べてください。

locateコマンドのインストール方法

Ubuntuの場合

Ubuntu 18.04.5 LTSで動作確認しました。以下のaptコマンドによりインストールすることができます。

$ sudo apt install mlocate

インストールした後にデータベースを作成する必要があります。以下のコマンドを打てばデータベースを作成できます2$^{,}$3

$ sudo updatedb

また、データベースの更新頻度の設定ファイルは/etc/cron.daily/mlocateです。デフォルトでは/etc/cron.dailyにあるファイルで設定されている場合は毎日実行されますが、その更新頻度や時間は/etc/anacrontabを確認してください。

さらに、ファイルやディレクトリの変更をした後に探す場合はデータベースを自分でアップデートする必要があるので、sudo updatedbでアップデートしてください3

Macの場合

Mac 11.0.1で動作確認しました。Ubuntuよりも多少インストールが面倒かもしれません。

まず、locate (適当なファイル名)を実行しようすると、以下のようなWarinigが出るので、書かれている通りのコマンドをコピペします。

% locate (適当なファイル名)
WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:

  sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.

% sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

上記のコマンドを打つことでデータベースが作成されます。ターミナル上ではすぐに終わっているように見えますが裏でデータベースが作成されているので、数分後にlocateコマンドでの検索が有効になります。

また、データベースの更新頻度の設定ファイルは/System/Library/LaunchDaemons/com.apple.locate.plistです4。デフォルトでは週に一回更新されています。

さらに、ファイルやディレクトリの変更をした後に探す場合はデータベースを自分でアップデートする必要があるので、以下のコマンドでアップデートしてください3

% sudo /usr/libexec/locate.updatedb

コマンドが長くて面倒な場合は以下のように.zprofileにaliasを設定しておけばupdatedbのみ打てばアップデートできるようになります。

.zprofile
#updatedb settings
alias updatedb="sudo /usr/libexec/locate.updatedb"

参考

Is there a way to use update command to locate files on OS X without having to run updatedb manually?


  1. 正確には.zprofileを含む絶対パス(文字列)を探してきます。 

  2. locateコマンドもupdatedbコマンドも自分の環境では/usr/binにあるので、sudo updatedbができない場合は/usr/binへのパスが通っていないと思われます。 

  3. 数分かかります。 

  4. man locate.updatedbで確認できます。 

DaikiSuyama
PythonとC++で競技プログラミングをしていました。最近は機械学習を勉強しています。 FXや株の自動売買、音楽の自動生成に興味があります。 [今]Djangoを勉強しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away