目录
locate操作命令
locate是一个普通的搜索命令,不同于find,locate只能搜索文件名,不能进行复杂条件搜索,但locat命令的搜索效率比find高很多,并且消耗资源少,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db!
1、locate命令安装
CentOS 7默认没有安装该命令,需要手动安装才能使用;
yum install mlocate
[root@localhost ~]# yum install mlocate 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com |
安装完后输入locate,提示未找到命令
[root@localhost ~]# locate -bash: locate: 未找到命令 |
原因是Linux不是实时更新它的后台数据库,而是每天自动更新一次,所以我们并不能马上执行,需要手动使用updatedb命令更新数据库才能使用locate命令;
[root@localhost ~]# updatedb [root@localhost ~]# locate locate: 没有指定任何搜索模式 |
2、locate命令的使用
【语法格式】
locate [选项] [参数]
功能描述(仅介绍最常用的选项,如需查看帮助文档可输入locate--help)
选项(注意大小写) | 作用 |
-i | 忽略大小写 |
应用场景
【2-1】搜索etc目录下所有以cron开头的文件,这个命令类似find /etc/ -name my*
locate /etc/cron
操作结果
[root@localhost ~]# locate /etc/cron /etc/cron.d /etc/cron.daily /etc/cron.deny /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly /etc/crontab /etc/cron.d/0hourly /etc/cron.daily/logrotate /etc/cron.daily/man-db.cron /etc/cron.daily/mlocate /etc/cron.hourly/0anacron |
【2-2】在家目录创建一个yu文件,然后使用locate查找这个文件;
[root@localhost ~]# locate /root/yu01 [root@localhost ~]# |
没有找到任何信息,因为新增的文件无法locate,使用locate是搜索数据库中的本地文件信息,而不是目录的信息,Linux每天自动更新一次数据库,因此,我们在用locate查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
[root@localhost ~]# updatedb [root@localhost ~]# locate /root/yu /root/yu |
另外,如果你需要限制locate的搜索条件,可以修改/etc/updatedb.conf文件
第一行PRUNE_BIND_MOUNTS="yes"的意思是:是否进行限制搜索。
第二行是排除检索的文件系统类型,即列出的文件系统类型不进行检索。
第三行表示对哪些后缀的文件排除检索,也就是列在这里面的后缀的文件跳过不进行检索。不同后缀之间用空格隔开。
第四行是排除检索的路径,即列出的路径下的文件和子文件夹均跳过不进行检索。