Tiina Asked: 2021-09-14 00:41:54 +0800 CST2021-09-14 00:41:54 +0800 CST 2021-09-14 00:41:54 +0800 CST 与“查找”相比,是什么让“定位”如此之快? 772 在我的印象中,两者都locate找到find了一个文件,但是为什么locate运行那么快呢? 根据其文档,locate: 描述 locate 读取由 updatedb(8) 准备的一个或多个数据库,并将匹配至少一个 PATTERN 的文件名写入标准输出,每行一个。 该数据库中有哪些文件,以及该数据库中创建的每个文件? linux locate 1 个回答 Voted Best Answer Quentin 2021-09-14T00:51:08+08:002021-09-14T00:51:08+08:00 在我看来,locate 和 find 都会找到一个文件,但是为什么 locate 运行得这么快呢? find搜索文件系统本身。它经过优化,可以告诉您所有内容(包括大小可能为数 GB 的文件的内容)给定文件的特定路径和被频繁写入的内容。 locate搜索从先前索引文件系统生成的数据库。该数据库针对执行的搜索类型进行了优化locate。 该数据库中有哪些文件,以及该数据库中创建的每个文件? 数据库由 填充updatedb。其中的文件由传递给updatedb. 文件将在其中,除非它们在被搜索的区域之外,或者它们是自updatedb上次运行以来创建的。 例如,我默认安装的 Ubuntu 有: PRUNE_BIND_MOUNTS="yes" PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /var/lib/ceph /home/.ecryptfs /var/lib/schroot" PRUNEFS="NFS afs autofs binfmt_misc ceph cgroup cgroup2 cifs coda configfs curlftpfs debugfs devfs devpts devtmpfs ecryptfs ftpfs fuse.ceph fuse.cryfs fuse.encfs 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" 在/etc/updatedb.conf文件中。 所以它索引除了某些目录之外的所有内容,这些目录由于各种(但希望相当明显)原因和一堆不同的文件系统类型(通常包含秘密数据、远程文件系统上的数据和系统 API)不应该成为索引。
find
搜索文件系统本身。它经过优化,可以告诉您所有内容(包括大小可能为数 GB 的文件的内容)给定文件的特定路径和被频繁写入的内容。locate
搜索从先前索引文件系统生成的数据库。该数据库针对执行的搜索类型进行了优化locate
。数据库由 填充
updatedb
。其中的文件由传递给updatedb
. 文件将在其中,除非它们在被搜索的区域之外,或者它们是自updatedb
上次运行以来创建的。例如,我默认安装的 Ubuntu 有:
在
/etc/updatedb.conf
文件中。所以它索引除了某些目录之外的所有内容,这些目录由于各种(但希望相当明显)原因和一堆不同的文件系统类型(通常包含秘密数据、远程文件系统上的数据和系统 API)不应该成为索引。