locateはファイルやディレクトリを高速検索するコマンドだ。
findコマンドでは直接ファイルやディレクトリを探す。
対して、locateコマンドでは、あらかじめ検索しておいたファイルやディレクトリのリストのデータベースを検索することで、高速な検索を行うことができる。
高速化のためにシンプルに名前しか検索対象としないので、findコマンドのようなユーザーや容量での検索はできない。
目次
- 1 locateコマンドの基本
- 2 locateコマンドのオプションたち
- 2.1 オプションの一覧
- 2.2 -bオプション(--basenameオプション):上位ディレクトリは検索せず、ファイルやディレクトリ自体を探す
- 2.3 -cオプション(--countオプション):検索された数を表示する
- 2.4 -dオプション(--databaseオプション):デフォルト以外のデータベースを指定する
- 2.5 -eオプション(--existingオプション):現在、存在するファイルやディレクトリのみを検索する
- 2.6 -iオプション(--ignore-caseオプション):大文字小文字を区別しない
- 2.7 -lオプション(--limitオプション):検索結果を指定した数まで表示する
- 2.8 -0オプション(--nullオプション):検索結果を改行しない
- 2.9 -qオプション(--quietオプション):データベースファイルの読み取りエラーを表示しない
- 2.10 -rオプション(--regexpオプション):正規表現で検索する
- 2.11 -wオプション(--wholenameオプション):パス全体で検索する
- 3 locate関連コマンド
locateコマンドの基本
コマンドの基本動作
使い方は、次のとおりだ。
$ locate 検索キーワード
キーワード.csvが含まれるファイルやディレクトリを高速に検索する場合は、次のコマンドだ。
$ locate .csv
キーワード.csvが含まれるファイルやディレクトリを高速に検索した。
locateコマンドは、あらかじめ用意されたデータベースを検索するため、直前に追加したファイルやディレクトリを検索することができない。
そこで、データベースを更新するupdatedbコマンドを使用し、データベース情報を更新させる。
はじめは、直前に追加されたファイル「sampledata.csv」は検索できなかったが、管理者権限でupdatedbコマンドを実行した後にlocateコマンドを実行すると、きちんと検索できている。
ファイルのデータベースの更新は、システム起動時や定期的に自動で行われるため、長時間にわたり更新されていない状態が続くことはない。
locateコマンドのオプションたち
オプションの一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション -b(オプション--basename)
上位ディレクトリは検索せず、ファイルやディレクトリ自体を探す。
オプション -c(オプション--count)
検索された数を表示する。
オプション -d(オプション--database)
デフォルト以外のデータベースを指定する。
オプション -e(オプション--existing)
現在、存在するファイルやディレクトリのみを検索する。
オプション -i(オプション--ignore-case)
大文字小文字を区別しない。
オプション -l(オプション-n, オプション--limit)
検索結果を指定した数まで表示する。
オプション -0(オプション--null)
検索結果を改行しない。
オプション -q(オプション--quiet)
データベースファイルの読み取りエラーを表示しない。
オプション -r(オプション--regexp)
正規表現で検索する。
オプション -w(オプション--wholename)
パス全体で検索する。
-bオプション(--basenameオプション):上位ディレクトリは検索せず、ファイルやディレクトリ自体を探す
オプションなしでは、ファイルパスに含まれるディレクトリに検索するキーワードがあってもそれを検索結果に出力してしまう。
-bオプションは、上位ディレクトリは検索せず、ファイルやディレクトリ自体を探す。
書式は次のとおりだ。
$ locate -b 検索キーワード
上位ディレクトリは検索せず、ファイルやディレクトリ自体でキーワードvagrantが含まれるファイルやディレクトリを高速に検索する場合は、次のコマンドだ。
$ locate -b vagrant
上位ディレクトリは検索せず、ファイルやディレクトリ自体でキーワードvagrantが含まれるファイルやディレクトリを高速に検索した。
-cオプション(--countオプション):検索された数を表示する
-cオプションは検索したファイルやディレクトリを表示せず、検索できたファイルやディレクトリの数を表示する。
書式は次のとおりだ。
$ locate -c 検索キーワード
キーワード.csvが含まれるファイルやディレクトリを高速に検索し、結果の数量を表示する場合は、次のコマンドだ。
$ locate -c .csv
キーワード.csvが含まれるファイルやディレクトリを高速に検索し、結果の数量を表示した。
-dオプション(--databaseオプション):デフォルト以外のデータベースを指定する
オプションなしではデータベースはあらかじめ設定されたデータベースファイルを読み込む。
デフォルト以外のデータベースを指定する書式は次のとおりだ。
$ locate -d データベースファイル 検索キーワード
データベースファイル/local/db/filedbを使用し、キーワード.csvが含まれるファイルやディレクトリを高速に検索する場合は、次のコマンドだ。
$ locate -d /local/db/filedb .csv
データベースファイル/local/db/filedbを使用し、キーワード.csvが含まれるファイルやディレクトリを高速に検索しようとしたが、データベースファイル/local/db/filedbが存在しないためにエラー表示となった。
-eオプション(--existingオプション):現在、存在するファイルやディレクトリのみを検索する
現在、存在するファイルやディレクトリのみを検索するする書式は次のとおりだ。
$ locate -e 検索キーワード
キーワード.csvが含まれるファイルやディレクトリのうち現在、存在するものだけを高速に検索する場合は、次のコマンドだ。
$ locate -e .csv
現在、存在するファイルやディレクトリのみを検索するしキーワード.csvが含まれるファイルやディレクトリを高速に検索した。
ファイルsampledata.csvを削除した後にlocateコマンドを実行しても、まだデータベースファイルが更新されていないので、sampledata.csvは検索されてしまう。
直後に-eオプションでlocateコマンドを実行すると、存在していないファイルsampledata.csvは検索対象とならない。
データベースファイルを更新しなくても、最新の状態で、存在しないファイルを表示しなくなったことがポイントだ。
-iオプション(--ignore-caseオプション):大文字小文字を区別しない
大文字小文字を区別しない書式は次のとおりだ。
$ locate -i 検索キーワード
大文字小文字を区別せずキーワード.cSvが含まれるファイルやディレクトリを高速に検索する場合は、次のコマンドだ。
$ locate -i .cSv
大文字小文字を区別せずキーワード.cSvが含まれるファイルやディレクトリを高速に検索した。
大文字と小文字の区別が関係なくなりSをsとして検索している。
-lオプション(--limitオプション):検索結果を指定した数まで表示する
オプションなしではすべての検索結果を表示する。
検索結果を指定した数まで表示する書式は次のとおりだ。
$ locate -l 検索数 検索キーワード
キーワード.csvが含まれるファイルやディレクトリを高速に検索し、結果を2つ表示する場合は、次のコマンドだ。
$ locate -l 2 .csv
キーワード.csvが含まれるファイルやディレクトリを高速に検索し、結果を2つ表示した。
-0オプション(--nullオプション):検索結果を改行しない
検索結果を改行しない。
書式は次のとおりだ。
$ locate -0 検索キーワード
キーワード.csvが含まれるファイルやディレクトリを高速に検索し結果を改行せず表示する場合は、次のコマンドだ。
$ locate -0 .csv
キーワード.csvが含まれるファイルやディレクトリを高速に検索し結果を改行せず表示した。
-qオプション(--quietオプション):データベースファイルの読み取りエラーを表示しない
データベースファイルの読み取りエラーを表示しない書式は次のとおりだ。
$ locate -q 検索キーワード
データベースファイル/local/db/filedbを使用し、データベースファイルの読み取りエラーを表示せず、csvが含まれるファイルやディレクトリを高速に検索する場合は、次のコマンドだ。
$ locate -q -d /local/db/filedb .csv
データベースファイル/local/db/filedbを使用し、データベースファイルの読み取りエラーを表示せず、csvが含まれるファイルやディレクトリを高速に検索した。
データベースファイル/local/db/filedbは存在しないのでエラーが表示されるはずだが、-qオプションにより表示されなくなった。
検索はできなかったので結果は何も表示されない。
-rオプション(--regexpオプション):正規表現で検索する
正規表現で検索する書式は次のとおりだ。
$ locate -r 検索キーワード
キーワードage-2~5.datに該当するファイルやディレクトリを高速に検索する場合は、次のコマンドだ。
$ locate -r age-[2-5].dat
キーワードage-2~5.datに該当するファイルやディレクトリを高速に検索した。
正規表現のため、2~5を[2-5]と表現した。また、検索キーワード全体を" "で囲む。
-wオプション(--wholenameオプション):パス全体で検索する
パス全体で検索する。
オプションなしでもデフォルトで設定されている。
書式は次のとおりだ。
$ locate -w 検索キーワード
キーワード.csvが含まれるファイルやディレクトリをパス全体で高速に検索する場合は、次のコマンドだ。
$ locate -w .csv
キーワード.csvが含まれるファイルやディレクトリをパス全体で高速に検索した。
明示的にパス全体で検索する場合に利用するとよいだろう。
locate関連コマンド
最後にlocateコマンドに関連して、基本的なファイルやディレクトリを検索するコマンドも紹介しておく。
findコマンド
ファイルを検索する。
updatedbコマンド
データベースファイルを更新する。
まとめ
findコマンドとlocateコマンドには違いがあるので区別して活用しよう。
findコマンドはファイルやディレクトリ自体を検索するので、最新の情報を検索できる。また、名称だけではなく、所有者やファイル容量でも検索できる。しかし高速ではない。
locateコマンドは、名称のみをあらかじめ作成したファイル一覧のデータベースから検索するため高速だ。しかし名称しか検索できない。シンプルな検索方法なので、ファイルを単純に探したいときはlocateコマンドの方が使いやすい。
コメント