このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】高速検索: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
」 コマンドは、高速にファイルやディレクトリを検索するための便利なツールです。指定されたデータベースを使用することで、検索速度が非常に速く、特に大規模なファイルシステムで有用です。定期的にデータベースを更新することで、最新のファイル情報を保持し、正確な検索結果を得ることが可能です。オプションを活用することで、より柔軟かつ効率的に検索を行うことができます。