在 Linux 中,有许多工具可以查找和定位文件和目录。 从以前的经验来看,我们看到其中一些工具在大规模上非常流畅,而其中一些工具的速度有点慢,但它们在目录上覆盖的规模很大。 之前,我们已经看到了如何在 Linux 中使用 fd 命令和 find 命令来查找文件。 代替 fd 或 find 命令,我们可以在 Linux 上使用 locate 命令快速有效地搜索具有特定参数的文件。
fd 命令和 locate 命令的主要区别在于,locate 命令可以快速找到目录中的文件,因为它使用特殊的数据库来搜索查询。
在基于 Linux 和 Unix 的系统中,locate 命令使用 mlocate 或合并的 locate 数据库来搜索整个系统。 定位命令于 1982 年首次在具有 GNU 隐私许可的 BSD 和 GNU 机器上发布。
定位命令如何工作?
定位命令在 Linux 上的工作方式非常常规,易于理解。 它使用系统上的数据库来存储与整个文件系统链接的路径。 当我们执行定位命令时,它会访问数据库并搜索结果。 定位命令使用 更新b 或用于存储所有搜索器和路径的 mlocate 数据库。
由于 locate 使用路径和链接来查找项目,这就是使 locate 命令更快的原因。 如果您需要进行任何更改或恢复您的 mlocate 数据库,您可以从下面提到的目录中访问配置文件。
/var/lib/mlocate/mlocate.db
通常情况下 mlocate 数据库 每当我们在 Linux 系统上执行定位命令时,它就会自动更新。 但是,在某些情况下,当删除文件或向系统添加新文件时,数据库可能不会立即获取系统的数据。 在这种情况下,您可以手动更新 Linux 系统上的 mlocate 数据库,以使您的定位命令更强大。
– –
您还可以更新 更新b 通过脚本进行配置。
# cat /etc/updatedb.conf PRUNE_BIND_MOUNTS="yes" PRUNENAMES=".git .bzr .hg .svn" PRUNEPATHS="/tmp /var/spool /media" PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs ecryptfs fusesmb devtmpfs"
在系统上安装定位
如今,在所有主要发行版中,locate 命令都预装在 Linux 系统中。 如果您在系统上找不到 locate 命令,您可以将它安装在您的机器上并开始使用它。
定位命令在Linux系统上的安装方法很简单。 该软件包已经存储在 Linux 的官方存储库中,因此我们可以通过 Debian Linux 上的 aptitude 注释和 Redhat 上的 DNF 或 Yum 命令安装它或 Fedora Linux 系统。
在运行安装命令之前,您可以检查系统上是否安装了 locate 命令。 要检查,您只需键入 定位 并点击终端外壳上的 enter 按钮。 如果您获得版本或状态信息,则该工具已安装在您的系统上。
如下图所示,没有安装定位工具,所以我们现在将运行安装命令。
$ locate
在您的 Ubuntu 或基于 Debian 的 Linux 上执行以下命令以在您的系统上安装定位工具。
sudo apt update sudo apt install mlocate
如果您使用的是基于 Yum Fedora 和 Redhat Linux 系统,您可以执行下面提到的命令集来获取定位工具。
sudo yum -y update sudo yum install mlocate
定位命令示例
在这篇文章中,我们将看到一些有用且实用的现实生活示例,您应该阅读和学习。 locate 命令可以在桌面和服务器上的所有主要 Linux 发行版中顺利运行。
1. 搜索文件
第一个 example 关于定位命令,我们将要看到的是如何通过定位命令在整个文件系统中搜索文件。 该命令将返回我们在整个系统中拥有的所有 MySQL 文件。
locate mysql
2.格式化输出
现在,如果要过滤上述命令,我们可以使用带有管道符号的 less 语法。 我们还可以使用 GREP 命令对输出进行排序或过滤。
locate mysql | less
3.显示现有文件
正如我前面提到的,有时定位命令不会删除我们刚刚从 Linux 系统中删除或我们刚刚添加到文件系统中的文件或数据。 所以为了得到合适的值,我们可以使用 -e
使用 locate 命令标记以消除已删除的文件。
例如,在这里,我运行了一个 rm 命令 从系统中删除文件。 现在,如果我以常规方式在 Linux 上运行 locate 命令,它会给我的结果是该文件仍然存在于系统上。 但是如果我们使用 -e 标志运行定位注释,它将立即重新加载定位数据库并更新输出。
rm file1.txt locate file1.txt locate -e file1.txt
4. 统计现有文件
对于特定查询,locate 命令还可以给出系统上存在多少文件的输出。
locate -c mysql
5. 搜索时禁用错误
很多时候,当我们通过 locate 命令找到一个项目,并且我们在路径或语法上出错时,它会返回一个错误信息。 如果我们想隐藏错误信息,我们可以添加一个额外的 -q
命令末尾的标志以在搜索时禁用错误。
locate -d ~/Documents/database.db hello locate -d ~/Documents/database.db hello -q
6.限制搜索结果的数量
我们还可以为定位命令设置限制以显示搜索结果。 下面提到的 locate 命令将只显示十个查询结果,以在文件系统中查找 .txt 文件。
locate *.txt -n 10
7.忽略区分大小写的文件
默认情况下,locate 命令在 Linux 中区分大小写,但您可以在系统上禁用它。 要禁用定位命令的大小写敏感性,我们可以使用 -i
命令中的标志。
$ locate file1.txt $ locate FILE1.TXT $ locate -i FILE1.TXT
8. 搜索具有确切名称的文件
如果我们想搜索一个具有确切名称的文件,我们可以使用 -r
Linux 中的 locate 命令中的标志。 在下面提到的命令中, $
符号用作表示会话已结束的表达式,斜线符号 (/) 是命令边界的符号。
locate -r /file404_UbuntuPIT.txt$
9. 使用 ASCII NUL 分隔输出条目
通常,在 Linux 中,locate 命令使用换行符打印输出,但如果我们愿意,我们可以从输出中删除空格并使用 ASCII null 打印输出。
locate -0 apache
10.查看数据库统计
除了搜索文件外,我们还可以在 Linux 上的 locate 命令上使用 -s 符号显示系统上特定查询的数据库结构。
locate -S
11.更新mlocate数据库
如果我们需要在我们的 Linux 系统上手动更新 locate 命令的数据库,我们可以执行以下命令 sudo 使用权。
sudo updatedb
12. 选择不同的 mlocate 数据库
如果您在搜索查询时遇到任何问题,则可能是定位数据库存在问题。 locate 命令默认使用 mlocate 数据库; 您也可以在其他数据库之间切换查找命令。
default mlocate database locate -d [new database path] [pattern]
13.忽略变音符号和口音差异
在某些情况下,您可能在文件名中使用了希腊字母或罗马字母,并且在搜索该文件时,您可能使用了常规字母而不是特殊字母。 在这种情况下,locate 命令将不返回任何输出。 要避免此问题并忽略变音符号和口音差异,您可以使用 -t
在你的命令中标记。
locate My_new_image_ca.jpeg locate -t My_new_image_ca.jpeg
14. 仅显示 展示 系统中的文件
我之前提到,locate 命令有时会在输出中返回已删除的文件。 有一些方法可以让您避免那些在系统上实际不存在且已被删除的文件。 您只能通过使用 -i
和 -e
Linux 中的 locate 命令上的标志。
locate -i -e *text.txt*
15. 搜索特定文件类型
您可以通过 locate 命令在 Linux 系统中搜索特定类型的文件。 例如,下面提到的命令显示了如何通过 locate 命令在系统中搜索文本和 jpeg 图像文件。
locate -c “*.txt*” locate -c “*.jpg*”
最后的话
在整篇文章中,我们了解了 locate 命令的工作原理以及它的数据库类型和操作,以提供高效的搜索结果。 我们已经浏览了一些强大且最常用的定位命令示例。
我希望这篇文章对你有所帮助; 如果是,请与您的朋友和 Linux 社区分享这篇文章。 您还可以让我们知道您认为哪种工具对在您的系统上查找文件最有用。