「locate」コマンド用のファイル名データベースから特定のディレクトリを除外する方法

Linux便利技

「locate」は、Linuxでファイルを探したい時に使うコマンドです。以下のように実行すれば、ファイル名データベースから検索パターンにマッチするファイルを探して出力されます。

locate 検索パターン

locateコマンドが利用するファイル名データベースは、多くのLinuxシステムで1日に1回「updatedb」コマンドにより更新されます。

updatedbコマンドの設定ファイルである「/etc/updatedb.conf」では、ファイル名データベースから除外するディレクトリを設定可能です。

/etc/updatedb.confのデフォルト設定はLinuxディストリビューションにより異なりますが、たとえばUbuntu 18.04 LTSでは以下のようになっています。

PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /var/lib/ceph /home/.ecryptfs /var/lib/schroot"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs devtmpfs fuse.mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ceph fuse.ceph fuse.rozofs ecryptfs fusesmb"

特定のディレクトリを除外したい場合、「PRUNEPATHS」に追加します。たとえば「/var/private」を追加で除外するなら、以下のように追記します。

PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /var/lib/ceph /home/.ecryptfs /var/lib/schroot /var/private"

なお、「PRUNENAMES」で除外するファイル名を、「PRUNEFS」で除外するファイルシステムを設定することも可能です。

Linux便利技
\シェアお願いします/
LFI

コメント

タイトルとURLをコピーしました