locateの使い方

/ Linux/Unix / Comment[0]
locateは、データベース方式の高速なファイル検索コマンド。
updatedbコマンドにより予め作成したデータベース内を検索することで、ファイル検索時間とディスク負荷を大幅に軽減している。

locateはmlocateのシンボリックリンクらしい。mlocateとlocateは同じってことだね。
$ ls -la `which mlocate`
-rwxr-sr-x 1 root mlocate 30276 2010-10-15 09:24 /usr/bin/mlocate*
$ ls -la `which locate`
lrwxrwxrwx 1 root root 24 2011-04-29 13:21 /usr/bin/locate -> /etc/alternatives/locate*
$ ls -la /etc/alternatives/locate
lrwxrwxrwx 1 root root 16 2011-04-29 13:21 /etc/alternatives/locate -> /usr/bin/mlocate*


構文
locate オプション 名前

オプション
-b ベース名(パスの末端の部分)のみ一致
-w 全パス名に一致
-c 見つかった数を表示
-d データベースファイルを指定
-S データベース情報を表示


データベース情報を表示
$ locate -S
データベース /var/lib/mlocate/mlocate.db:
23,990 辞書
327,619 ファイル
ファイル名に 18,111,964 バイト
データベースに保存するのに 7,299,228 バイト使いました

ベース名にhosts.allowを含むファイルを表示
$ locate -b hosts.allow
/etc/hosts.allow
/usr/share/man/man5/hosts.allow.5.gz


/home内のjpg,JPGファイルの数を表示
$ locate -w /home*.JPG /home*.jpg -c
2573


updatedbコマンドの設定ファイルは/etc/updatedb.confにある。
適切に設定しておかないと、USBメモリ内やらネットワークファイルシステム内やらCDROM内など、データベースに登録するのに適切でない場所まで登録してしまうことになる。
また、locateコマンドはrootにsuidされており、どの一般ユーザからでも実行可能になっているので、他のユーザに自分のプライベートディレクトリにあるファイルを列挙されてしまう可能性もある。
でも大丈夫。updatedb.confとプライベートディレクトリのパーティション(700とか)を適切に設定すればね。

# vi /etc/updatedb.conf
#対象外のパス
PRUNEPATHS="/tmp /var/spool /media /home/phtm/Desktop"
#対象外のファイルシステム
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
#対象外の名前
PRUNENAMES=".git .bzr .hg .svn .swp"
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可