このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

高速検索:locateコマンド

locate コマンドの概要

 「locate」 コマンドは、指定された名前を持つファイルを迅速に検索するためのUNIX系、Linux系システムのコマンドです。このコマンドは、リアルタイムでファイルシステムを検索するのではなく、事前に作成されたデータベースを使用するため、非常に高速に検索結果を返すことができます。このデータベースは定期的に更新されており、新しいファイルや変更されたファイルを反映します。

特徴
  • 高速性: データベースを利用するため、find コマンドなどと比べて検索が非常に速い。
  • データベースの更新updatedb コマンドを使用してデータベースを定期的に更新する必要がある。
  • シンプルな使用法: シンプルなコマンド構文で使いやすい。
仕組み

 「locate」 コマンドは、事前に作成されたファイル名データベースを検索します。このデータベースは、通常、システム全体のファイルとディレクトリのリストを含んでいます。このデータベースは、定期的に更新されるように設定されています。

主なオプションと説明

以下に、locate コマンドの主なオプションとその説明を表にまとめます。

オプション説明
-i大文字小文字を区別しない検索を行います。
-l <数>表示する結果の数を制限します。
-cマッチしたエントリの数だけを表示します。
主なオプションと説明

コマンドの使用例と解説

事前準備

まず、演習を行うために事前準備を行います。

ファイルを作成します。以下のコマンドを実行します。

# ファイルの作成
user01@ubuntu-vm:~$ touch example1.txt
user01@ubuntu-vm:~$ touch EXAMPLE2.txt
user01@ubuntu-vm:~$ touch example3.txt
user01@ubuntu-vm:~$ touch example4.txt
user01@ubuntu-vm:~$ touch example5.txt

# ファイルとディレクトリの確認
user01@ubuntu-vm:~$ ls
EXAMPLE2.txt  example4.txt  ダウンロード  ドキュメント  ミュージック
example1.txt  example5.txt  テンプレート  ビデオ        公開
example3.txt  snap          デスクトップ  ピクチャ
locateコマンドのインストール

・「locate example1.txt」コマンドを実行します。

 Ubuntuの場合、「コマンド ‘locate’ が見つかりません。次の方法でインストールできます」と表示されます。

user01@ubuntu-vm:~$ locate example1.txt
コマンド 'locate' が見つかりません。次の方法でインストールできます:
sudo apt install plocate

・「sudo apt install plocate」コマンドを実行します。

lacateコマンドをインストールします。

 パスワードの入力が求められたらパスワードを入力し、続行しますか? [Y/n] の質問には「y」と入力します。

user01@ubuntu-vm:~$ sudo apt install plocate
[sudo] user01 のパスワード:  # パスワードを入力します。
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
以下の追加パッケージがインストールされます:
  liburing2
以下のパッケージが新たにインストールされます:
  liburing2 plocate
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 122 個。
140 kB のアーカイブを取得する必要があります。
この操作後に追加で 555 kB のディスク容量が消費されます。
続行しますか? [Y/n] y # 「y」と入力します。
取得:1 http://jp.archive.ubuntu.com/ubuntu jammy/main amd64 liburing2 amd64 2.1-2build1 [10.3 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu jammy/main amd64 plocate amd64 1.1.15-1ubuntu2 [129 kB]
140 kB を 1秒 で取得しました (104 kB/s)
以前に未選択のパッケージ liburing2:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 204238 個のファイルとディレクトリが
インストールされています。)
.../liburing2_2.1-2build1_amd64.deb を展開する準備をしています ...
liburing2:amd64 (2.1-2build1) を展開しています...
以前に未選択のパッケージ plocate を選択しています。
.../plocate_1.1.15-1ubuntu2_amd64.deb を展開する準備をしています ...
plocate (1.1.15-1ubuntu2) を展開しています...
liburing2:amd64 (2.1-2build1) を設定しています ...
plocate (1.1.15-1ubuntu2) を設定しています ...
update-alternatives: /usr/bin/locate (locate) を提供するために自動モードで /
usr/bin/plocate を使います
グループ `plocate' (GID 137) を追加しています...
完了。
Initializing plocate database; this may take some time... done
Created symlink /etc/systemd/system/timers.target.wants/plocate-updatedb.tim
er → /lib/systemd/system/plocate-updatedb.timer.
man-db (2.10.2-1) のトリガを処理しています ...
libc-bin (2.35-0ubuntu3.7) のトリガを処理しています ..
1.基本的なファイル検索

・「locate example1.txt」コマンドを実行します。

example1.txt」 という名前を含むすべてのファイルを検索します。

user01@ubuntu-vm:~$ locate example1.txt
/home/user01/example1.txt
2.大文字小文字を区別しない検索

example2.txt」 という名前を大文字小文字を区別せずに検索します。

まず、「-i」オプションを指定せずに検索します。

・「locate example2.txt」コマンドを実行します。

ファイルが検索されません。

user01@ubuntu-vm:~$ locate example2.txt
user01@ubuntu-vm:~$

今度は、「-i」オプションを指定して検索します。

・「locate -i example2.txt」コマンドを実行します。

大文字小文字が区別されずに検索されます。

user01@ubuntu-vm:~$ locate -i example2.txt
/home/user01/EXAMPLE2.txt
3.表示する結果の数を制限

・「locate -l 3 /home/user01/example」コマンドを実行します。

ホームディレクトリを指定して「example」を含む検索結果を最大3件まで表示します。

user01@ubuntu-vm:~$ locate -l 3 /home/user01/example
/home/user01/example1.txt
/home/user01/example3.txt
/home/user01/example4.txt
4.マッチしたエントリの数を表示

・「locate -c /home/user01/example」コマンドを実行します。

ホームディレクトリを指定して「example」を含むエントリの数を表示します。

user01@ubuntu-vm:~$ locate -c /home/user01/example
4
作成したファイルの削除

この演習で作成したファイルを削除します。

・「rm example* EXAMPLE2.txt」コマンドを実行します。

user01@ubuntu-vm:~$ rm example* EXAMPLE2.txt
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 「locate」 コマンドは、高速にファイルやディレクトリを検索するための便利なツールです。指定されたデータベースを使用することで、検索速度が非常に速く、特に大規模なファイルシステムで有用です。定期的にデータベースを更新することで、最新のファイル情報を保持し、正確な検索結果を得ることが可能です。オプションを活用することで、より柔軟かつ効率的に検索を行うことができます。