locate コマンド:ファイル検索

コマンドの概要

 locateコマンドは、システム上で高速にファイルを検索するためのコマンドです。検索は事前に構築されたデータベースを使用して行われ、非常に迅速に結果を返します。

 ファイル名やディレクトリの名前、保存した場所を忘れた場合に、このコマンドを使用すると便利です。

コマンドの主なオプションと説明

オプション説明
-c検索された数を表示する。
-d他の検索用データベースファイルのパスを指定します。
-e存在するファイルやディレクトリのみを検索する。
-i大文字小文字を区別しないで検索します。
-l出力件数を指定します。
-qエラーメッセージを無視します。
-r正規表現を使用してファイル名を検索します。
-wパス全体で検索します。デフォルトでオプションなしで指定されている。
主なオプションと説明

コマンドの使用例と解説

1.’hosts’を含むファイル、またはディレクトリの検索
$ locate hosts
/etc/ghostscript
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/avahi/hosts
/etc/samba/lmhosts
/usr/bin/ghostscript
(省略)

‘hosts’という文字列が含まれるファイル、ディレクトリの一覧が表示されます。

2.’hosts’を含むファイル、またはディレクトリの検索数
$ locate -c hosts
776

検索数が表示されます。

3.メタキャラクタを指定した検索

 「*」や「?」などのメタキャラクタを指定した検索も可能です。以下の例は、「sh」の前、「sh」と「Color」の間、「Color」の後に任意の長さの文字列を含むものが検索されます。

$ locate '*sh*Color*'
/usr/share/app-info/icons/rhel-7/128x128/org.gnome.ColorProfileViewer.png
/usr/share/app-info/icons/rhel-7/64x64/org.gnome.ColorProfileViewer.png
/usr/share/applications/org.gnome.ColorProfileViewer.desktop
/usr/share/dbus-1/interfaces/org.freedesktop.ColorHelper.xml
(省略)
4.grepを使った絞り込み検索
$ locate hosts | grep '^/etc'
/etc/ghostscript
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/avahi/hosts
/etc/samba/lmhosts

 locateコマンドの出力をgrepコマンドにパイプします。grepコマンドでは、行頭に「/etc」がマッチするものだけに絞り込みます。

5.ファイル名データベースの更新

 多くのディストリビューションでは、このupdatedebコマンドは定期的に実行されるようになっていますが、手動でデータベースを更新したい場合は、以下のコマンドを実行します。

$ su -
パスワード:
最終ログイン: 2024/01/19 (金) 01:43:03 JST日時 pts/0
# updatedb

 これらの例は、locateコマンドを使用してファイルを検索する基本的な方法を示しています。検索結果はデータベースに基づいているため、定期的に更新することが重要です。更新はupdatedbコマンドで行います。updatedbコマンドは、rootユーザーだけが実行できます。