shell命令--locate
shell命令--locate
0、locate命令的专属图床
点此快速打开文章【图床_shell命令locate】
1、locate命令的功能说明
locate
命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。一般情况我们只需要输入locate your_file_name
即可查找指定文件。CentOS 7已经没有此命令,需手动安装,方法为:yum install -y mlocate
locate
命令用来查找文件或目录。locate
命令要比find -name
快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db
。这个数据库中含有本地所有文件信息。Linux
系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate
之前,先使用updatedb
命令,手动更新数据库。整个locate
工作其实是由四部分组成的:
/usr/bin/updatedb
主要用来更新数据库,通过crontab自动完成的/usr/bin/locate
查询文件位置/etc/updatedb.conf
updatedb的配置文件/var/lib/mlocate/mlocate.db
存放文件信息的文件
2、locate命令的语法格式
SYNOPSIS locate [OPTION]... PATTERN...
3、locate命令的选项说明
- -b, --basename:match only the base name of path names
- -c, --count:只输出找到的数量
- -d, --database DBPATH:使用DBPATH指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
- -e, --existing:only print entries for currently existing files
- -L, --follow:follow trailing symbolic links when checking file existence (default)
- -h, --help:显示帮助
- -i, --ignore-case:忽略大小写
- -l, --limit, -n LIMIT:limit output (or counting) to LIMIT entries
- -m, --mmap:ignored, for backward compatibility
- -P, --nofollow, -H:don't follow trailing symbolic links when checking file existence
- -0, --null:separate entries with NUL on output
- -S, --statistics:don't search for entries, print statistics about eachused database
- -q, --quiet:安静模式,不会显示任何错误讯息
- -r, --regexp REGEXP:使用基本正则表达式
- --regex:使用扩展正则表达式
- -s, --stdio:ignored, for backward compatibility
- -V, --version:显示版本信息
- -w, --wholename:match whole path name (default)
4、locate命令的实践操作
范例1:查找
passwd
字符串,输入以下命令环境准备
rpm -qa mlocate -->查找是否已安装mlocate包 yum install -y mlocate &>/dev/null -->安装mlocate包 !rpm
实践操作
locate passwd -->what?怎么查不了?
附加说明
locate
与find
不同:find
是去硬盘找,locate
只在/var/lib/slocate
资料库中找。
locate
的速度比find
快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db
中,所以locate
的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为updatedb
再次操作
updatedb -->手工升级数据库 locate passwd -->再次查找
范例2:新增的文件无法
locate
,使用updatedb
touch new.txt locate new.txt updatedb !locate
范例3:
updatedb
的配置文件/etc/updatedb.conf
cat /etc/updatedb.conf
第一行
PRUNE_BIND_MOUNTS="yes"
的意思是:是否进行限制搜索。
第二行是排除检索的文件系统类型,即列出的文件系统类型不进行检索。
第三行表示对哪些后缀的文件排除检索,也就是列在这里面的后缀的文件跳过不进行检索。不同后缀之间用空格隔开。
第四行是排除检索的路径,即列出的路径下的文件和子文件夹均跳过不进行检索。updatedb之后使用locate仍然找不到想要文件
可以检查挂载的目录是否被忽略了
『MineGi有话说』:快来扫一扫下面链接的二维码,加入我们吧!
您的资助是我最大的动力!
金额随意,欢迎来赏!