locate命令是利用数据库来查找文件,相比which、whereis和find,速度更快,效率更高。
locate命令的语法格式如下:
locate [选项] 文件名
常用选项如下:
- -i:忽略大小写
- -c:不输出文件名,仅统计找到的文件数量
- -l N:N为整数,表示仅输出找到的N个文件
- -S:输出locate所使用的数据库文件的相关信息
- -r:后面可接正则表达式的显示方式
特别说明:locate是基于数据库的,起初这个数据库可能不存在,必须执行【updatedb】命令建立数据库。很显然,数据库建立后,如果有新文件产生,利用locate将无法找到这个新文件,这时可以再执行【updatedb】命令更新数据库。
若提示”未找到updatedb或locate命令“,请执行以下命令安装mlocate软件包即可
[root@myEuler ~]# dnf -y install mlocate
实例演示:
1、创建/更新和查看数据库
# 首次执行时可能会提示数据库文件不存在
[root@node1 ~]# locate passwd
locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': No such file or directory
# 创建或更新数据库
[root@node1 ~]# updatedb
# 查看数据库信息
[root@node1 ~]# locate -S
数据库 /var/lib/mlocate/mlocate.db:
12,235 文件夹
87,765 文件
4,912,049 文件名中的字节数
2,279,760 字节用于存储数据库
2、找出文件名包含了passwd的文件,且只显示前3个
#找出系统中所有文件名包含了passwd的文件,且只显示前3个
[root@node1 ~]# locate -l 3 passwd
/etc/passwd
/etc/passwd-
/etc/ima/digest_lists/0-metadata_list-compact-passwd-0.80-10.oe2203sp1.aarch64
从上面的示例可以看到,locate命令是依据/var/lib/mlocate内的数据库记录进行文件查找的。
而updatedb命令则根据/etc/updatedb.conf文件的设置读取硬盘,从而建立或更新数据库。