6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

生産性向上のための環境整備2020 - 02 【PR】 LenovoAdvent Calendar 2020

Day 19

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

Last updated at Posted at 2020-12-19

#前書き

環境構築をしていた中で最も活躍したと思われる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. 数分かかります。 2 3

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

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?