但行好事
莫论前程❤

Linux命令学习–locate查找命令

Ubuntu16.4 操作系统

locate

locate命令可以在搜寻数据库时快速找到档案,locate为模糊查找,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab) ,可以手动更新.使用命令:

sudo updatedb

​ locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,locate查询文件时,会去搜索/var/lib/mlocate/mlocage.db,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*” 或”?”等来指定范本样式,如指定范本为kcpa*ner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。

locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。

使用实例:

  • 搜索etc目录下所有以sh开头的文件
[root@CentOS7 ~#]locate /etc/sh       
/etc/shadow
/etc/shadow-
/etc/shells
[root@centos7 ~#]locate -r "/etc/\sh "  # 正则,锚定词首
/etc/shadow
/etc/shadow-
/etc/shells
  • 忽略大小写
[root@centos7 ~#]locate -i ~/d
/root/Desktop/root/Documents/root/Downloads
/root/d1
/root/dd
/var/lib/pcp/pmdas/root/domain.h
  • 更新数据库 updatedb
[root@centos7 ~#]locate ~/a
/root/anaconda-ks.cfg
[root@centos7 ~#]updatedb
[root@centos7 ~#]locate ~/a
/root/a.sh
/root/anaconda-ks.cfg

以上操作可能会报错:

updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

原因:updatedb命令需要sudo权限

使用中遇到的问题汇总

1.CentOS操作系统中可能不带有locate命令
locate: command not found
# 安装
yum -y install mlocate
# 更新数据库
sudo updatedb
2.当在某些目录下创建文件,然后更新数据库之后,并不能用locate命令查找到 \

原因是系统在更新数据库的配置文件中,设置了一些搜索限制,所以搜索不到,输入如下命令可以看到:

[root@localhost ~]# vi /etc/updatedb.conf

PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 gpfs 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"

/etc/updatedb.comf配置文件

  • PRUNE_BIND_MOUNTS = “yes”表示开启搜索限制,如果为’no’则表示不开启搜索限制;
  • PRUNEFS =表示搜索时,不搜索的文件系统;
  • PRUNENAMES =表示搜索时,不搜索的文件类型;
  • PRUNEPATHS =表示搜索时,不搜索的路径;

不只locate命令遵循搜索限制,whereis与which也遵循

whereis与which命令

whereis与which命令是用来搜索命令的

find命令

find命令功能强大,搜索速度相对较慢,而且搜索范围广

赞(1) 打赏
未经允许不得转载:刘鹏博客 » Linux命令学习–locate查找命令
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏