locate命令

locate命令用于查找符合条件的文件,其会去保存文件和目录名称的数据库内,查找符合指定条件的文件或目录,locate命令预设的数据库位于/var/lib/mlocate/mlocate.dblocatefind不同,find是去硬盘找,而locate只在数据库中查找,这个数据库中含有本地所有文件信息,Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件,可以主动执行updatedb命令以更新数据库。

语法

locate [OPTION] [PATTERN]

参数

  • -b, --basename: 仅将基本名称与指定的模式匹配。
  • -c, --count: 在标准输出上不输出文件名,而只输出匹配条目的数量。
  • -d, --database <DBPATH>: 用指定的数据库替换默认数据库,如果指定了多个--database选项,则结果路径是单独路径的串联,此外空数据库文件名将替换为默认数据库。
  • -e, --existing: 仅打印引用定位时存在的文件的条目。
  • -L, --follow: 在检查文件是否存在时,遵循尾随的符号链接,这会使将导致断开的符号链接从输出中省略,这是默认行为。
  • -h, --help: 在线帮助。
  • -i, --ignore-case: 匹配模式时忽略大小写区别。
  • -l, --limit, -n <LIMIT>: 找到LIMIT个条目后成功退出,如果指定了--count选项,则结果计数也将限制为LIMIT
  • -m, --mmap: 出于BSDGNU兼容性而被忽略。
  • -P, --nofollow, -H: 在检查文件是否存在时,不跟随尾随的符号链接,这会使断开的符号链接像其他文件一样被报告。
  • -0, --null: 使用ASCII NUL字符分隔输出上的条目,而不是将每个条目写在单独的行上,此选项旨在与GNU xargs--null选项互操作。
  • -S, --statistics: 将每个有关读取数据库的统计信息写入标准输出,而不是搜索文件并成功退出。
  • -q, --quiet: 不输出任何有关读取和处理数据库时遇到的错误的消息。
  • -r, --regexp <REGEXP>: 搜索基本的正则表达式,如果使用此选项,则不允许使用模式匹配,但可以多次指定此选项。
  • --regex: 将所有PATTERN解释为扩展的正则表达式。
  • -s, --stdio: 出于BSDGNU兼容性而被忽略。
  • -V, --version: 输出版本信息。
  • -w, --wholename: 将整个路径名与指定的模式匹配,这是默认行为。

示例

查找file.txt文件。

locate file.txt

输出匹配file.txt文件名的数量。

locate -c file.txt

匹配以make结尾的文件。

locate -r make$

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://man.linuxde.net/locate_slocate https://www.runoob.com/linux/linux-comm-locate.html https://www.tutorialspoint.com/unix_commands/locate.htm