連載
» 2016年07月11日 05時00分 UPDATE

Linux基本コマンドTips(30):【 locate 】コマンド――ファイルを名前で検索する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「locate」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイルを探すための「locate」コマンドです。

locateコマンドとは?

 「locate」は、ファイル名やディレクトリ名からファイルを探すためのコマンドです。「locateデータベース」と呼ばれるデータベースファイルを使うので高速に動作しますが、locateデータベースを更新しないと新しいファイルを探すことはできません。


locateコマンドの書式

locate [オプション] パターン

※[ ]は省略可能な引数を示しています



locateコマンドの主なオプション

 locateコマンドの主なオプションは次の通りです。

短いオプション 長いオプション 意味
-d パス --database= パス データベースの位置を指定する


ファイル名の一部からファイルを探す

 「locate ファイル名」で、指定したファイルを探します。指定するのはファイル名の一部でも構いません。

 例えば、「locate bashrc」を実行すると、「bashrc」というファイルを探します。しかし、locateコマンドではファイル名やディレクトリ名の一部でもヒットするので、「bashrc」だけではなく、「.bashrc」もヒットすることになります

 「locate .bashrc」と指定して実行すれば、「/etc/bashrc」は対象外になります。一方、「.bashrc」を除外したい場合は、「locate /bashrc」と指定して実行します(画面1)。

コマンド実行例

locate bashrc

(「bashrc」だけではなく、「.bashrc」もヒットする)

locate /bashrc

(「.bashrc」は除外される)


画面1 画面1 「locate bashrc」と「locate /bashrc」の実行結果

 locateコマンドでは「/」や「.」を特別扱いしません。コマンドの実行イメージとしては、ファイルのフルパスが書かれたリストから「grep」するような感じになります。



locateデータベースを更新する

 locateコマンドは、ファイル名のリストが記録された「locateデータベース」と呼ばれるデータベースを参照してファイルを検索します。ディスクを見に行くのに比べて高速ですが、ファイルが新たに追加された場合、データベースが更新されない限り、検索結果に反映されません。

 locateデータベースは「updatedb」コマンドで更新します。デフォルトで定期的に自動実行されるようになっていますが、手動で更新することも可能です。手動更新の際にはroot権限が必要なので、「su」または「sudo」コマンドを使用してください。

コマンド実行例

$ sudo updatedb

(sudoが使えない場合はsuコマンドを使うか、rootユーザーでログインして実行)

# updatedb


 以下の画面2の実行例では、「/etc/bashrc」をデスクトップにコピーしていますが、コピーした直後ではlocateコマンドにヒットしません。updatedbコマンドの実行後は、デスクトップにコピーした「bashrc」もヒットするようになります。

画面2 画面2 updatedbコマンドでlocateデータベースを更新すると、locateコマンドにヒットするようになる


grepコマンドと組み合わせる

 locateコマンドではヒットするファイルが多すぎる場合、「grep」コマンドで結果を絞り込むとよいでしょう。

 例えば、「locate profile」を実行すると、ディレクトリ名の一部やファイル名の一部に「profile」を含む全てが対象となるので、かなりの数がヒットします。

 「locate /profile」としても、「profile.h」や「profiles」のように「profile」から始まるファイルやディレクトリも対象となるので、「名前がprofile」だけに絞ることができません。

 そこで、「grep」コマンドを使って、「profileで終わっている行」で絞り込んでみましょう。具体的には、行末を意味する「$」記号と組み合わせて、「profile$」と指定します(画面3)。

コマンド実行例

locate /profile | grep profile$


画面3 画面3 grepコマンドと組み合わせて実行し、検索結果を絞り込む(CentOSの場合、エイリアスでgrepに「--color」オプションが指定されているため、該当箇所が赤色で表示されています)


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。