【Linux学习笔记】6:文件搜索命令locate

时间:2021-06-27 17:02:04

文件搜索命令有locate和find,本节学习loacte,它的好处是速度比find要快许多。缺点是只可以按照文件名来搜索。

locate文件搜索

locate [文件名]

选项:没有选项。它不是遍历全部目录,而是搜索/var/lib/mlocate(保存的是locate的数据库,不同的linux版本这个目录不同,可以用locate locate去看看那个目录在哪)。然而这个数据库不是实时更新的,它的更新频率一般是一天一更新,对于某些新建的文件在更新前可能搜索不到。

*找不到新建的文件

[root@bogon ~]# ll
总用量 44
-rw-------. 1 root root 1392 822 18:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 27016 822 18:22 install.log
-rw-r--r--. 1 root root 7572 822 18:20 install.log.syslog
[root@bogon ~]# locate install.log
/root/install.log
/root/install.log.syslog
[root@bogon ~]# touch myok
[root@bogon ~]# locate myok
[root@bogon ~]#

updatedb手动更新数据库

(词汇:update database)

*手动更新后就能找到它了

[root@bogon ~]# updatedb
[root@bogon ~]# locate myok
/root/myok

locate命令的配置文件

locate命令按照/etc/updatedb.conf配置文件的要求来搜素(后面将学的whereis和which命令也遵循这个配置文件),可以打开它看一下:
【Linux学习笔记】6:文件搜索命令locate
*第一句

PRUNE_BIND_MOUNTS = "yes"

写”yes”表示这个文件中的筛选规则全部生效。

*第二句

PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"

里面的是不筛选的文件系统。

*第三句

PRUNENAMES = ".git .hg .svn"

表示不搜索文件名中包含这些关键字的文件,它认为这些文件对我们的使用者没有作用,所以不搜索。

*第四句

PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"

表示这些目录中更新的文件不会被搜索。