はじめに
Linuxシステム内で特定のファイルやディレクトリを検索する際、findコマンドは非常に強力ですが、ファイルシステム全体をリアルタイムで探索するため、時間がかかる場合があります。これに対し、locateコマンドは、事前に作成されたデータベース(locateDBまたはmlocate.db)を参照することで、瞬時に検索結果を返す高速な検索ツールです。
locateコマンドは高速ですが、その検索結果はデータベースが最後に更新された時点の情報に基づきます。そのため、リアルタイム性よりも検索速度が重視される場合に最適です。
LPICレベル1の試験では、locateコマンドの動作原理、そしてデータベースを更新するupdatedbコマンドとの関係の理解が問われます。この記事では、locateコマンドの基本的な使い方から、コマンド名の由来、必須オプション、そしてLPIC対策として押さえるべきポイントまでを詳しく解説していきます。
locateコマンドの基本
まずは、locateコマンドの基本的な使い方と、その動作原理を確認しましょう。
locateコマンドの書式
locate [オプション] 検索パターン...
- ポイント:
locateは、データベースに登録されているパス名全体に対して検索パターン(ワイルドカードを含む)で部分一致検索を行います。
主要オプション一覧
| オプション | 意味 | 補足 |
-i | 検索時に大文字・小文字を区別しない | ignore-case |
-c | 一致したエントリの件数のみを表示する | count |
-n | 表示する結果の最大行数を指定する | max-entries |
コマンド名の由来:なぜ「locate」なのか?
locateコマンドの「locate」は、英語の “locate”(位置を突き止める、見つけ出す) という動詞から来ています。
このコマンドの目的は、ファイルシステム内にあるファイルやディレクトリの「位置(フルパス)」をデータベースから瞬時に探し出すことにあります。その機能がそのままコマンド名として使われています。
動作原理:updatedbとの関係
locateコマンドの理解において最も重要なのが、検索の仕組みです。
- データベースの作成:
locateはファイルシステムを直接検索しません。代わりに、updatedbコマンドが定期的に実行され、システム内のファイルやディレクトリのフルパス情報がデータベースファイル(通常/var/lib/mlocate/mlocate.db)に保存されます。 - 検索:
locateを実行すると、このデータベースファイルが読み込まれ、ユーザーが指定したパターンに一致するエントリが抽出されます。
- 注意:
updatedbは通常、システム設定により1日に1回などの頻度で自動実行されます。そのため、データベース更新後に作成された新しいファイルは、updatedbが次回実行されるまでlocateでは見つけられません。
必須オプションの詳細と実践例
locateコマンドのオプションを、主要オプション一覧の順番に沿って詳しく見ていきます。
1. -i (ignore-case) オプション:大文字・小文字の無視
意味: 検索パターンとデータベースのエントリを比較する際、大文字と小文字を区別せず検索を行います。
実践例:
locate -i readme
# 「readme」に関連するファイルを、大文字・小文字を問わずに検索

オプションの由来: iはignore-case(大文字・小文字を無視する)の頭文字です。
2. -c (count) オプション:一致件数の表示
意味: 検索条件に一致したファイルのフルパスを一覧表示する代わりに、その件数のみを表示します。
実践例:
locate -c '*.conf'
# 「.conf」ファイルがシステムにいくつあるか、件数のみをカウント

オプションの由来: cはcount(数)の頭文字です。
3. -n (max-entries) オプション:表示件数の制限
意味: 検索結果が大量にある場合でも、表示する行数を指定した数に制限します。
実践例:
locate -n 10 man
# 「man」に関連するパスのうち、最初の10件のみを表示

オプションの由来: nはmax-entries(最大エントリ数)の「数」を表します。
LPIC対策としてのポイント
locateコマンドに関するLPICの出題傾向として、以下の点を確実に押さえておきましょう。
- データベース:
locateがmlocate.dbなどのデータベースを参照することで高速化されていること。 - リアルタイム性の欠如: データベースの更新頻度により、最新のファイルが見つからない可能性があること。
updatedb: データベースを手動で即座に更新するためのコマンドがupdatedbであること(管理者権限が必要)。- 検索方法: デフォルトの検索は、パス名の部分一致であること。
まとめ
今回は、高速なファイル検索を実現するlocateコマンドについて、その基本的な使い方、データベースに基づく動作原理、そして特に重要なオプションまでを詳しく解説しました。locateは、updatedbによって管理されるデータベースを利用することで、システム全体からのファイル検索を瞬時に実行できます。
LPICレベル1の試験対策としては、locateとupdatedbの関係、そして-iや-cなどのオプションをしっかりとマスターしておきましょう。


コメント