`updatedb`は可能なすべてを捉えます

`updatedb`は可能なすべてを捉えます

updatedb.findutilsupdatedb.mlocate可能なすべてを捉えることはできないようです。すべてのファイルを含めるようにどのように指示できますか?

$ printf 'locate: %s, smaller than find: %s\n' "$(sudo locate '*' | wc -l | numfmt --grouping)" "$(sudo find / | wc -l | numfmt --grouping)"
locate: 9 348, smaller than find: 14 053

updatedbルートとして実行します。

タイトルからわかるように、私が欲しいものすべての可能性をつかむ。私はそれを制限しlocateたり、その範囲内にupdatedb制限したくありません。find

.confファイルを変更できません。ファイルを変更していないまま動作するコマンドが必要です。

答えは依然として異なる結果を提供します

$ printf 'locate.mlocate: %s, smaller than find: %s\n' "$(sudo updatedb.mlocate --prune-bind-mounts no --prunefs "" --prunenames "" --prunepaths ""; sudo locate.mlocate '*' | wc -l | numfmt --grouping)" "$(sudo find / | wc -l | numfmt --grouping)"
locate.mlocate: 13 598, smaller than find: 14 053
$ printf 'locate.findutils: %s, smaller than find: %s\n' "$(sudo updatedb.findutils --prunepaths="" --prunefs=""; sudo locate.findutils '*' | wc -l | numfmt --grouping)" "$(sudo find / | wc -l | numfmt --grouping)"
locate.findutils: 13 455, smaller than find: 14 053

答え1

sudo find /そして。locateupdatedbupdatedb/proc/sys

このmlocateバージョンでは、次の特定のファイル名、パス、およびファイルシステムタイプをスキップするエントリ/etc/updatedb.confを表示できます。updatedb

PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /var/lib/ceph"
PRUNEFS="NFS afs autofs binfmt_misc ceph cgroup cgroup2 cifs coda configfs curlftpfs debugfs devfs devpts devtmpfs ecryptfs ftpfs fuse.ceph fuse.glusterfs fuse.gvfsd-fuse fuse.mfs fuse.rozofs fuse.sshfs fusectl fusesmb hugetlbfs iso9660 lustre lustre_lite mfs mqueue ncpfs nfs nfs4 ocfs ocfs2 proc pstore rpc_pipefs securityfs shfs smbfs sysfs tmpfs tracefs udev udf usbfs"

find /合計を比較するには、スキャンするファイルシステムを正確に知る必要がlocate '*'ありますfind。たとえば、別の/合計がある場合を/home使用しますsudo find / /home -xdev | wc -l

updatedbより多くのファイルをキャプチャするには、/etc/updatedb.conf必要に応じてファイルを編集したり、コマンドラインから設定を上書きしたりできます。

sudo updatedb --prune-bind-mounts no --prunefs "" --prunenames "" --prunepaths ""

次の場合もfindutils同様の上書きを実行できます。

sudo updatedb --prunepaths="" --prunefs=""

システムデータベースを上書きしたくない場合は、-o /path/to/filemlocate)または--output=/path/to/filefindutils)を使用して出力ファイル名を指定できます。

updatedb/locateとすべてのファイルでまったく同じ結果を得ることはできませんfind /。何よりも、/の内容は常に変更されるため、/procこれを実行するときと実行するときupdatedbの間に常に変更がありますfind

関連情報