精通 Linux 上的文件搜索

有很多有用的命令可以搜索文件,find 命令可能是其中最有名的,但它不是唯一的命令,也不一定总是找到目标文件的最快方法。

-- Sandra Henry-stocker

本文导航

◈ 快速搜索命令:which 和 locate

07%

◈ 不仅仅是文件名

23%

◈ 不仅仅是列出文件

61%

◈ 其他搜索条件

68%

◈ 根据用户查找文件

70%

◈ 根据权限查找文件

73%

◈ 根据修改时间查找文件

74%

◈ 通过比较修改时间查找文件

77%

◈ 寻找重复的文件

80%

◈ 总结

92%

编译自 | https://www.networkworld.com/article/3227075/linux/mastering-file-searches-on-linux.html

作者 | Sandra Henry-stocker

译者 | jessie-pang

在 Linux 系统上搜索文件的方法有很多,有的命令很简单,有的很详细。我们的目标是:缩小搜索范围,找到您正在寻找的文件,又不受其他文件的干扰。在今天的文章中,我们将研究一些对文件搜索最有用的命令和选项。我们将涉及:

◈ 快速搜索

◈ 更复杂的搜索条件

◈ 组合条件

◈ 反转条件

◈ 简单和详细的回应

◈ 寻找重复的文件

有很多有用的命令可以搜索文件, 命令可能是其中最有名的,但它不是唯一的命令,也不一定总是找到目标文件的最快方法。

快速搜索命令:which 和 locate

搜索文件的最简单的命令可能就是 和 了,但二者都有一些局限性。 命令只会在系统定义的搜索路径中,查找可执行的文件,通常用于识别命令。如果您对输入 时会运行哪个命令感到好奇,您可以使用命令 ,它会指出对应的可执行文件。

命令会显示它找到的第一个以相应名称命名的可执行文件(也就是使用该命令时将运行的那个文件),然后停止。

命令更大方一点,它可以查找任意数量的文件,但它也有一个限制:仅当文件名被包含在由 命令构建的数据库时才有效。该文件可能会存储在某个位置,如 ,但不能用 以外的任何命令读取。这个文件的更新通常是通过每天通过 cron 运行的 进行的。

简单的 命令没有太多限制,不过它需要指定搜索的起点和搜索条件。最简单的 命令:按文件名搜索文件。如下所示:

如上所示,通过文件名搜索文件系统的当前位置将会搜索所有子目录,除非您指定了搜索深度。

不仅仅是文件名

命令允许您搜索除文件名以外的多种条件,包括文件所有者、组、权限、大小、修改时间、缺少所有者或组,和文件类型等。除了查找文件外,您还可以删除文件、对其进行重命名、更改所有者、更改权限和对找到的文件运行几乎任何命令。

下面两条命令会查找:在当前目录中 root 用户拥有的文件,以及不被指定用户(在本例中为 shs)所拥有的文件。在这个例子中,两个输出是一样的,但并不总是如此。

感叹号 字符代表“非”:反转跟随其后的条件。

下面的命令将查找具有特定权限的文件:

接下来的命令显示具有 777 权限的非符号链接文件:

以下命令将查找大小超过千兆字节的文件。请注意,我们找到了一个非常有趣的文件。它以 ELF core 文件格式表示了该系统的物理内存。

只要您知道 命令是如何描述文件类型的,就可以通过文件类型来查找文件。

在下面的命令中,我们要寻找符号链接和套接字:

您还可以根据 inode 号来搜索文件:

另一种通过 inode 搜索文件的方法是使用 命令。在大的文件系统上,这个命令可能比 快得多,您可能需要安装 icheck。

在下面的命令中,我们从主目录()开始,限制搜索的深度(即我们将搜索子目录的层数),并只查看在最近一天内创建或修改的文件( 设置)。

不仅仅是列出文件

使用 选项,在您使用 命令找到文件后可以以某种方式更改文件。您只需参照 选项即可运行相应的命令。

在这条命令中, 代表文件名。此命令将更改当前目录和子目录中任何名为 的文件的权限。

把您想运行的任何命令放在 选项之后,并使用类似于上面命令的语法即可。

其他搜索条件

如上面的例子所示,您还可以通过其他条件进行搜索:文件的修改时间、所有者、权限等。以下是一些示例。

根据用户查找文件

根据权限查找文件

根据修改时间查找文件

通过比较修改时间查找文件

像这样的命令可以让您找到修改时间较近的文件。

寻找重复的文件

如果您正在清理磁盘空间,则可能需要删除较大的重复文件。确定文件是否真正重复的最好方法是使用 命令。此命令使用 md5 校验和来确定文件是否具有相同的内容。使用 (递归)选项, 将在一个目录下并查找具有相同校验和而被确定为内容相同的文件。

如果以 root 身份运行这样的命令,您可能会发现很多重复的文件,但是很多文件都是创建时被添加到主目录的启动文件。

同样,您可能会在 中发现很多重复的但不该删除的配置文件。所以,请谨慎利用 的输出。

命令并不总是很快,但是要记住,它正在对许多文件运行校验和来做比较,你可能会意识到它是多么有效。

总结

有很多方法可以在 Linux 系统上查找文件。如果您可以描述清楚您正在寻找什么,上面的命令将帮助您找到目标。

via:https://www.networkworld.com/article/3227075/linux/mastering-file-searches-on-linux.html

作者:Sandra Henry-Stocker

[2]

译者:jessie-pang校对:wxy

本文由LCTT原创编译,Linux中国荣誉推出

LCTT 译者

jessie-pang

共计翻译:6篇

贡献时间:18 天

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180205B0J4H800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券