shell命令--locate_右键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​​工作其实是由四部分组成的:

  1. ​/usr/bin/updatedb​​ 主要用来更新数据库,通过crontab自动完成的
  2. ​/usr/bin/locate​​ 查询文件位置
  3. ​/etc/updatedb.conf​​ updatedb的配置文件
  4. ​/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仍然找不到想要文件
​ 可以检查挂载的目录是否被忽略了