如何在 Linux 中搜索文件

如何从命令行在 Linux 中搜索文件

在 Linux 上搜索文件最强大的方法是使用命令行。就像Windows 有一个find命令一样,Linux 也有。UNIX 命令find可以非常轻松地找到您可能正在寻找的任何类型的文件。以正确的方式执行,find甚至可以查看您的文件内部以识别特定的文本字符串,并且您可以将搜索范围缩小到最近修改的那些文件。

基本用法

find 的基本用法如下所示:

find /home/jeff -name “*.jpg”

该命令将在我的主目录中搜索所有以.jpg结尾的文件。不过,该命令还可以完成更多工作。

遵循符号链接

默认情况下,find命令将忽略符号链接。但是,以下命令将跟随这些链接:

find -O3 -L /var/www/ -name “*.html”

在上面的示例中,该命令将列出/var/www目录树中的所有 HTML 文件。

查找空文件

现在,假设您想识别目录中的所有空文件。以下命令可以做到这一点:

find . -type f -empty

这里的关键是-type  和-empty 参数,用于代替前面示例中的-name标志。

进一步的例子

让我们看一个更基本的示例,它将返回在前 6 天内更改的文件。

find /home -user randomperson -mtime 6 -iname "*.db"

在此命令中,将列出所有以.db结尾的文件,忽略文本大小写,但前提是文件已在过去 6 天内由名为randomperson的用户修改。

find-with-mtime

此执行返回过去 11 天内修改的给定目录中的所有文件

查找 Linux 文件的有用选项和优化

附加标志可以控制find应用其搜索测试的顺序。默认情况下,find首先根据文件名过滤搜索结果,然后再运行任何其他测试。该标志将是-O1,但实际上没有理由包含它。

如果您传递-O2标志,则根据文件名查找过滤器,然后是文件类型。第三个选项-O3会根据资源的有效利用和返回相关结果的可能性自动重新排序搜索。

您可以使用以下参数更改更多默认行为:

  • -maxdepth X:搜索指定目录及其子目录,最大深度为X
  • -iname:搜索文件,忽略大小写。
  • -not:只产生与指定测试用例不匹配的结果。
  • -type f:仅查找文件
  • -type d:仅查找目录
  • -mtime X:仅返回前X天修改过的文件。

使用 Grep 根据内容定位文件

find单独使用时,只会根据文件名和元数据过滤您的文件和目录。但是,可以更深入地挖掘并使用另一个 Linux 命令根据文件包含的内容来搜索文件。

用于此的工具是久经考验的真正grep命令。这是它的工作原理。

find . -type f -exec grep "forinstance" '{}' \; -print

此命令将查看当前目录树中的每个文件( -type f )(在命令中由.注明)。接下来,它在每个文件上运行grep “例如”,打印包含forinstance的文件。

find-with-exec-grep

在此示例中,find命令返回包含文本“Hello”的所有文件

在上述命令中,花括号 ( {} ) 是find命令返回的文件结果的占位符。它们放在单引号 (  ) 内,以防止向grep发送畸形的文件名。

-exec命令以分号 ( ; ) 结束,它需要转义 ( \; ),因此 Linux 不会尝试将其解释为另一个命令或参数。

使用 Exec 让您的查找结果更进一步

现在您知道如何使用-exec将查找结果发送到另一个命令,您将有兴趣了解您可以做的不仅仅是grep搜索结果。事实上,这种能力使得快速轻松地批量修改文件变得非常容易。

find . -name "rc.conf" -exec chmod o+r '{}' \;

上面的命令由/etc目录中的 root 用户发出,将搜索所有名为rc.conf的文件。它将更改每个文件的权限,以授予文件所有者读取权限(chmod o+r)。

请记住,-exec将从 Linux 安装的根目录运行。如果您希望从包含匹配文件的目录运行附加命令,请改用-execdir

默认情况下,-exec-execdir将继续自行不间断地运行。如果您希望在第二个命令执行任何操作之前看到提示,请分别将选项替换为-ok-okdir

find-with-ok-flag-and-prompts

使用-ok标志,在对匹配搜索参数的文件执行任何操作之前, find会提示您

要真正充分利用find ,阅读该命令的手册条目至关重要。

如何使用 GUI 在 Linux 中搜索文件

许多 Linux 的 GUI 文件管理器也将支持搜索。在 Ubuntu 中,您可以使用Files应用程序搜索特定文件。只需单击 Dock 中的文件夹图标,然后单击放大镜。

using-Files-to-search

此 GUI 工具允许您按文件类型以及上次访问或修改文件的时间进行过滤。此选项所没有的是在搜索结果中快速运行其他命令的能力。

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun133676.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2022年2月25日 下午1:23
下一篇 2022年2月26日 下午2:30

相关推荐