updatedb.findutils
updatedb.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 /
そして。locate
updatedb
updatedb
/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/file
(mlocate
)または--output=/path/to/file
(findutils
)を使用して出力ファイル名を指定できます。
updatedb
/locate
とすべてのファイルでまったく同じ結果を得ることはできませんfind /
。何よりも、/の内容は常に変更されるため、/proc
これを実行するときと実行するときupdatedb
の間に常に変更がありますfind
。