Linux FIND 命令及示例


你知道全新安装的 Linux 中有多少个文件吗?如果您使用 PopOS!以Linux发行版 为例,有超过31,000个文件。这是在您开始创建任何文档、存储音乐、下载 PDF 或组织图片之前。

因此,当您需要时在 Linux 中找到正确的文件或文件夹成为一项挑战。在本文中,您将学习如何使用 Linux FIND 命令,我们将为您提供所有示例。

Linux FIND 命令语法

语法是指单词或命令如何组合在一起。就像普通的句子只要打乱单词就会变得毫无意义一样,如果没有以正确的语法使用命令,命令也可能会失败。

查找[路径][条件][操作]

这意味着什么:

find ——在 Linux 中启动“查找”实用程序

路径 ——往哪里看

条件 - 您想要应用于搜索的参数

操作 - 您想对结果执行什么操作

使用所有三个的简单示例如下所示:

查找 . -名称文件样本.rtf -print

正如您所猜测的,这将找到文件名file-sample.rtf

句点 (. ) 路径告诉 find 在当前目录及其内部的任何目录中查找。

-name 条件 告诉 find 获取具有该特定名称的文件。

-print 操作告诉 FIND 在屏幕上显示结果。

句点和 -print 是 find 命令的默认值。所以如果你不使用它们它仍然会做同样的事情。因此,find -name file-sample.rtf 会给您相同的结果。

Linux 在另一个目录中查找

您可以在与您所在目录不同的目录中进行搜索。只需在 FIND 后插入该目录的路径即可。如果您位于根目录并且知道该文件位于您将使用的 home/user 目录中的某个位置:

查找 home/user-name file-sample.rtf

这仍然是递归搜索,因此它将遍历用户 下的每个目录。.

Linux FIND 搜索多个目录

如果您想同时搜索多个目录,只需在命令中列出它们,并用空格分隔即可。

查找 /lib /var /bin -name file-sample.rtf

无递归或限制递归的 Linux FIND

如果您在根级别使用上面的 FIND 命令,它将查找系统上的每个目录。因此,如果您只想保留当前目录,请使用 -maxdepth 选项。 -maxdepth 之后的数字告诉 Find 在停止之前要走多深。

使用-maxdepth 1 表示仅此目录。

find -name file-sample.rtf -max深度 1

使用-maxdepth 2 或更大的数字意味着更深的层次。

find -maxdepth 5 -name file-sample.rtf

Linux FIND 通配符示例

FIND 命令使用星号 (* ) 作为通配符。将其用于您不确定的名称的任何部分。它可以在名称中多次使用。如果文件名中没有文件类型,结果还将包括匹配的目录。

查找 home/user-name 文件*样本*

Linux 按类型查找示例

要仅搜索文件或目录,请使用 -type 选项和适当的描述符。有一些,但文件和目录是最常见的:

f – 文件

d – 目录

b – 块设备

c – 字符设备

l – 符号链接

s – 套接字

查找家庭/用户 -名称文件*样本* -类型 d

Linux FIND 不区分大小写示例

与 Windows 不同,Linux 关心字母是大写还是小写。因此,如果您希望它同时搜索 File-Sample.rtf 和 file-sample.rtf,请使用 -iname 选项。

查找 home/user -iname File-Sample.rtf

Linux 查找多个文件示例

假设您想要查找文件的 .rtf 和 .html 版本。这可以使用 -o (或)运算符在一个命令中完成。在某些发行版中,您可能需要将名称放在括号内,例如 ( -name file-sample.rtf -o -name file-sample.html ) 。.

查找 home/user -name file-sample.rtf -o -name file-sample.html

Linux 查找与名称不匹配的文件

也许您知道某个文件有 .html 版本,但如果还有其他版本则不知道。您可以使用-not 选项从搜索中过滤掉 .html 版本。

查找 home/user -name file-sample* -not -name *.html

Linux FIND 无错误结果

在不使用递归的查找示例中,请注意它列出了无法搜索的每个目录以及正确的结果。这很烦人。让我们阻止它显示所有那些“权限被拒绝”的目录。将其与另一个 Linux终端命令 结合起来,grep。您还可以使用带有 grep 的 Find 查找其中包含特定单词的文件

find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v“权限被拒绝”

让我们分解一下2>&1

2 – 代表stderr,它是标准错误输出的缩写。

1 – 代表stdout,它是标准输出的缩写

> – 表示将其左侧的任何输出重定向到其右侧的任何输出。

& ——意思是放在一起。

所以2>&1 的意思是获取标准错误并重定向它们,然后将它们与标准输出一起放到一个输出中。

现在让我们看看| grep -v“权限被拒绝”

<强>| (称为管道)——告诉 Linux 将其左侧的结果提供给其右侧的结果。它被提供给 grep 命令。

grep – 是一个文本搜索实用程序。

-v – 告诉 grep 搜索任何与 -v 左侧文本不匹配的内容。在本例中,它告诉 grep 只查找不包含文本或字符串“权限被拒绝”的任何内容。因此 grep 只会显示您正在查找的结果以及与“权限被拒绝”不匹配的任何错误。

Linux 按权限查找示例

.

要很好地使用它,您需要学习Linux权限

示例文件的权限均为 664,但其中一个文件的权限为 775。使用 -perm 选项查找它。

查找文档/ -name file-sample* -type f -perm 775

Linux 按大小查找示例

按大小查找文件可以方便地让这些大文件填满您的硬盘。使用 -size 选项、所需的大小以及以下后缀之一。如果不使用后缀,-size 默认为 b 。要查找等于或大于特定大小的文件,请在大小前面添加加号 (+)。

M – 兆字节

G – 千兆字节

k – 千字节

b – 块(512 字节 – 默认)

c – 字节

w – 单词(两个字节在一起)

查找大小 +500k

Linux 按所有者查找

有两种方法可以按所有者查找文件。一种是通过所有者的用户名,另一种是通过用户的组。要按用户名查找,请使用-user 选项,后跟用户名。要按用户组查找,请使用-group 后跟组名称..

find -user 组名find -user 用户名

Linux 按上次修改示例查找文件

要查找过去 X 天内修改或编辑的文件,请使用 -mtime 后跟数字。在数字前面加上减号 ( ) 将发现在此之前的几天内发生的任何更改。加号 (+ ) 表示在此之前的许多天内。

find -name “file-sample*” -mtime +5(大于 5 天前)

find -name “file-sample*” -mtime -5(少于 5 天前)

要查找上次修改时间(以分钟为单位),请使用选项 -mmin 后跟分钟数。像上面一样使用+和-。

find -name“文件样本*”-mmin -5

find -name“文件样本*”-mmin +5

Linux 按上次访问时间查找文件示例

.

用于根据上次打开时间查找文件的选项是 -atime (表示天)和 -amin (表示分钟)。后面加上要返回的天数或分钟数,并使用 + 和 - 号表示大于和小于。

find -name“file-sample*”-atime -5

查找-name“文件样本* -amin -5

将 FIND 与其他 Linux 命令结合使用

上面有一个将 find 与 grep 命令结合使用的示例,您还可以将它与许多其他命令一起使用。您可以看到,使用 find 和其他命令非常强大并且可以节省大量时间。想象一下必须删除一堆特定类型的文件。无需在文件资源管理器中搜索,只需编写正确的命令,几秒钟内即可完成。现在您将如何使用 find 命令?

.

相关文章:


18.01.2022