Linux 中的 locate 命令是一种快速且高效的工具,用于根据文件名查找文件。与 find 命令不同,它通过搜索预先建立的文件路径数据库来工作,而不是扫描整个文件系统,这使得搜索速度快得多。
- 用于根据名称搜索和定位文件或目录。
- 由于使用了预索引的数据库,其工作速度比 find 命令更快。
- 数据库使用 updatedb 命令进行更新。
- 在数据库刷新之前,新创建的文件不会出现在搜索结果中。
示例 1:使用 locate 命令搜索特定名称的文件
locate sample.txt
此命令将在特定目录中搜索 sample.txt。
locate 命令的语法
locate [OPTION]... PATTERN...
退出状态: 如果找到任何指定的匹配项,该命令将以状态 0 退出。如果未找到匹配项或遇到致命错误,则将以状态 1 退出。
locate 命令中的选项
1. 仅打印现有文件
仅显示当前系统中存在的文件。
locate -e sample.txt
2. 跟随符号链接
包含作为符号链接的文件(默认行为)。
locate -l 5 newfolder
3. 使用 locate 命令显示匹配条目的数量
locate -c [.txt]*
它将统计以 .txt 结尾的文件。
4. 使用 locate 命令忽略大小写
该命令默认配置为以区分大小写的方式处理查询。这意味着 SAMPLE.TXT 将显示与 sample.txt 不同的结果。
$ locate -i *SAMPLE.txt*
5. 使用 locate 命令输出不带换行符的条目
locate -i -0 *sample.txt*
locate 命令的默认分隔符是换行符(\
)。但是,如果有人想使用不同的分隔符,如 ASCII NULL,则可以使用 -0 命令行选项来实现。
6. 限制结果数量
仅显示前五个匹配的 .conf 文件。
locate -l 5 *.conf
7. 显示数据库统计信息
显示有关 locate 数据库的信息,例如文件计数和存储大小。
locate -S
输出:
Database /var/lib/mlocate/mlocate.db:
12345 directories
67890 files
2,345,678 bytes in file names
8. 使用 locate 命令将搜索查询限制为特定数量
locate "*.html" -n 20
它将显示 20 个以 .html 结尾的文件搜索结果。
Linux 中 ‘locate‘ 命令可用的选项
描述
—
仅根据指定模式匹配基本名称,这与 –wholename 相反。
不在标准输出上写入文件名,而是仅写入匹配条目的数量。
用 DBPATH 替换默认数据库。DBPATH 是以 :(冒号)分隔的数据库文件名列表。如果指定了多个 –database 选项,则结果路径是各个路径的连接。空的数据库文件名将由默认数据库替换。数据库文件名 – 指的是标准输入。请注意,从标准输入读取数据库只能进行一次。
仅打印在运行 locate 时存在的文件的条目。
检查文件是否存在时(如果指定了 –existing 选项),跟随尾部的符号链接。这将导致损坏的符号链接从输出中省略。此选项是默认行为。可以使用 –nofollow 指定相反的行为。
将可用选项的摘要写入标准输出并成功退出。
匹配模式时忽略大小写区别。
在找到 LIMIT 个条目后成功退出。如果指定了 –count 选项,则结果计数也限制为 LIMIT。
已忽略,但为了与 BSD 和 GNU locate 兼容而包含在内。
检查文件是否存在时(如果指定了 –existing 选项),不跟随尾部的符号链接。这将导致损坏的符号链接像其他文件一样被报告。此选项与 –follow 相反。
在输出上使用 ASCII NULL 字符分隔条目,而不是换行符。