一、简介
locate命令用于查找符合条件的文件,为什么这么说呢,是因为它会去相应的数据库内查找,找到数据库内符合条件的文件,一般情况下我们使用locate时,只需要输入locate filename即可快速查到指定的文件。
也有可能在使用locate命令时,提示该命令不存在,此时需要先安装该命令。如果不知道要安装哪个文件才能生成该命令,可以使用下方法进行查看和安装。
[]已加载插件:fastestmirror, langpacksLoading mirror speeds from cached hostfileCentOS7.6 | 3.6 kB 00:00:00CentOS7.6/filelists_db | 3.2 MB 00:00:00mlocate-0.26-8.el7.x86_64 : An utility for finding files by name源 :CentOS7.6匹配来源:文件名 :/usr/bin/locatemlocate-0.26-8.el7.x86_64 : An utility for finding files by name源 :@anaconda匹配来源:文件名 :/usr/bin/locate
在使用以上命令查看时,需要提前配置好yum源。再使用yum install命令安装对应的位数文件即可。
二、语法
语法:locate [选项] 文件
参数说明:
-b, --basename -- 仅匹配路径名的基本名称
-c, --count -- 只输出找到的数量
-d, --database DBPATH -- 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, --existing -- 仅打印当前现有文件的条目
-l, --limit, -n LIMIT -- 将输出(或计数)限制为LIMIT个条目
-h, --help -- 显示帮助
-i, --ignore-case -- 忽略大小写
-m, --mmap -- 被忽略,为了向后兼容
-P, --nofollow, -H -- 检查文件存在时不要遵循尾随的符号链接
-0, --null -- 在输出上带有NUL的单独条目
-S, --statistics -- 不搜索条目,打印有关每个数据库的统计信息
-q -- 安静模式,不会显示任何错误讯息。
-r, --regexp REGEXP -- 使用基本正则表达式
-s, --stdio -- 被忽略,为了向后兼容
-V, --version -- 显示版本信息
三、实战
1、查看符合条件的一个命令
[root iso]# locate passwd/etc/passwd/etc/passwd-/etc/pam.d/passwd/etc/security/opasswd/iwen/anaconda3/bin/kpasswd/iwen/anaconda3/mysql-test/suite/perfschema/r/hostcache_ipv4_passwd.result================此处省略部分内容================
此时会找到很多与passwd有关的文件,如果只想显示几行,可以使用以下命令进行查找。
2、查看文件时限制返回条数
[root iso]# locate -l 3 passwd/etc/passwd/etc/passwd-/etc/pam.d/passwd
3、查看一个目录下以sh开头的文件
[root iso]# locate /etc/sh/etc/shadow/etc/shadow-/etc/shells
4、只统计数量,不输出查找结果
[]4868
5、忽略大小写查询
[root iso]# locate -i PASSWD/etc/passwd/etc/passwd-/etc/pam.d/passwd/etc/security/opasswd
find、whereis和locate都是查找对应的文件,它们3个区别如下:
特性 | find | whereis | locate |
搜索目标 | 所有文件 | 命令相关文件 | 所有文件 |
原理 | 实时遍历 | 预定义目录 | 文件数据库 |
实时性 | 实时 | 实时 | 非实时 |
速度 | 较慢 | 极快 | 最快 |
功能 | 强大且复杂 | 简单 | 中行 |
使用场景 | 精确条件搜索 | 查找命令所有组件 | 快速搜索文件 |
总之一句话:简单查找命令用whereis,快速查文件用locate,精确复杂搜索用find。