Linux locate 命令

17 Mar 2025 | 4 分钟阅读

locate 命令和 find 命令都用于按名称搜索文件。但它们之间的区别在于,locate 命令是一个后台进程,在数据库中搜索文件,而 find 命令在文件系统中搜索。locate 命令比 find 命令快得多。

如果您无法使用 locate 命令找到文件,则意味着您的数据库已过时,您可以使用 "updatedb" 命令更新数据库。

语法

选项

一些有用的命令行选项如下:

-A, --all: 用于仅显示匹配所有 PATTERNS 的条目,而不是要求只有一个匹配。

-b, --basename: 用于仅将基本名称与指定模式进行匹配。

-c, --count: 用于在标准输出上显示匹配条目的数量,而不是文件名。

-d, --database DBPATH: 用于将默认数据库替换为 DBPATH。

-e, --existing: 用于在命令执行期间仅显示引用现有文件的条目。

-L, --follow: 如果指定了 "--existing" 选项,则用于检查文件是否存在并遵循尾随符号链接。它将省略指向输出的无效符号链接。这是默认行为。可以使用 "--nofollow" 选项指定相反的行为。

-h, --help: 用于显示帮助文档,其中包含可用选项的摘要。

-i, --ignore-case: 用于忽略指定模式的区分大小写。

-p, --ignore-spaces: 用于在匹配模式时忽略标点符号和空格。

-t, --transliterate: 用于在使用 iconv 转换时忽略口音,以匹配模式。

-l, --limit, -n LIMIT: 如果指定了此选项,则命令在找到 LIMIT 条目后成功退出。

-m, --mmap: 用于忽略与 BSD 和 GNU locate 的兼容性。

-0, --null: 用于使用 ASCII NUL 字符分隔输出中的条目,而不是在单独的行上写入每个条目。

-S, --statistics: 用于在标准输出上写入有关每个读取数据库的统计信息,而不是搜索文件。

-r, --regexp REGEXP: 用于搜索基本正则表达式 REGEXP。

--regex: 用于将所有 PATTERNS 描述为扩展正则表达式。

-V, --version: 用于显示版本和许可信息。

-w, --wholename: 用于仅匹配指定模式中的整个路径名。

locate 命令的示例

让我们看一些 locate 命令的示例:

如何使用 locate 命令

locate 命令是一个有用的文件搜索实用程序。它非常直接,只需按如下方式执行命令:

考虑下面的输出

Linux Locate

我们可以使用 "-n" 选项限制搜索结果以避免冗余。

例如。要显示我们查询的仅 5 个结果,请按如下方式执行命令:

上面的命令将显示前五个文本文件。请看下面的输出:

Linux Locate

显示匹配条目的数量

要显示匹配文件的总数,请使用 '-c' 选项执行命令。请看下面的命令:

上面的命令将显示文件名中包含 "Demo" 的文件总数。请看下面的输出:

Linux Locate

忽略区分大小写

众所周知,Linux 终端区分大小写。因此,如果以大写形式搜索文件,它将仅列出大写文件。要忽略区分大小写,请按如下方式使用 '-i' 选项执行命令:

上面的命令将显示文件名中同时包含 "demo" 和 "Demo" 的文件。请看下面的输出:

Linux Locate

更新 mlocate 数据库

locate 命令依赖于 'mlocate' 数据库。因此,如果 locate 命令无法正常工作,我们需要更新数据库。要更新数据库,请按如下方式执行 'updatedb' 命令:

仅显示系统中的可用文件

有时,locate 命令会显示已删除文件的结果。为避免看到已删除文件的结果,请使用 '-e' 选项执行命令。它将仅显示系统中物理上存在的文件。请看下面的命令:

它将产生以下输出:

Linux Locate

跟踪 mlocate 数据库的状态

要定位数据库统计信息,请使用 '-S' 选项执行命令,如下所示:

考虑下面的输出

Linux Locate

使用不同的分隔符分隔输出条目

locate 命令的默认输出分隔符是换行符。但是我们可以更改默认分隔符。例如,要使用 ASCII NUL,请使用 '-0' 选项执行命令。请看下面的命令:

它将显示如下输出:

Linux Locate
下一个主题Linux Date