从命令行查找Linux中的文件

Linux是一个非常灵活的操作系统,它提供了不同的命令和查找文件的方法。作为一个基于命令行的操作系统,Linux提供了一个非常强大的find命令,可以根据不同的方面来查找文件。在本教程中,我们将研究如何使用find命令轻松地根据文件的名称、大小、位置、属性等查找文件。

null

查找命令语法

find命令的语法如下,其中SEARCHu LOCATION和SEARCHu TERM是必须的。

find OPTION SEARCH_LOCATION SEARCH_TERM
  • 期权 用于指定不同的搜索类型,如大小、所有者、权限等。
  • 搜索u位置 是搜索的开始路径并继续到子目录。
  • 搜索u项 将在文件名中搜索的文件名或扩展名或术语。

根据名称查找文件

查找文件最常用的方法是根据文件名进行搜索。文件由不同的名称组成,这些名称可以包含字母、特殊字符和数字。我们可以搜索具有完整名称或部分名称的文件。为了根据姓名进行搜索 -姓名 应使用选项。在下面的示例中,我们将在路径“/home/ismail/”中搜索名为example.txt的文件。即使它不是强制性的使用双引号是非常重要的,防止错误。

$ find /home/ismail -name "example.txt"

结果如下所示及其完整路径。

/home/ismail/example.txt

我们还可以只提供文件名的开头,并列出以指定字符开头的文件。在下面的示例中,我们将搜索以“python”开头的文件。我们将使用搜索词“ *蟒蛇 “在哪里 * 表示任何字符。

$ find /home/ismail -name "python*"

输出如下。每个搜索结果文件名都包含术语“python”。

/home/ismail/snap/notepad-plus-plus/238/notepad-plus-plus/autoCompletion/python.xml/home/ismail/.local/lib/python3.8/home/ismail/.local/lib/python3.8/site-packages/numpy/lib/tests/data/python3.npy

我们还可以根据文件名称的结尾搜索文件。在下面的示例中,我们将搜索以“3.8”结尾的文件。我们将使用“*3.8”。

$ find /home/ismail -name "*3.8"

输出将如下所示,因为我们看到以“3.8”结尾的不同文件将被列出。即使文件名的开头也不同,每个列出的文件都以“3.8”结尾。

/home/ismail/.local/lib/python3.8/home/ismail/.local/bin/f2py3.8

查找命令搜索 默认情况下区分大小写 . 这意味着大写字母不同于小写字母。可以使用禁用区分大小写 -稻名 参数。在下面的示例中,我们将以不区分大小写的方式搜索文件。这意味着“example.txt”、“example.txt”、“example.txt”将匹配以下搜索。

$ find /etc -iname "example.txt"

根据扩展名查找文件

扩展名用于表示文件中的文件类型或数据。例如“ *.txt文件 “用于文本文件,并添加在文件名之后。”*。“pdf”用于pdf文件,“*.doc”用于Word文件等。find命令可用于根据扩展名搜索文件。我们将使用-name选项并只提供文件扩展名。在下面的示例中,我们将列出扩展名为“*.txt”的文本文件。

$ find /home/ismail -name "*.txt"

输出如下。

/home/ismail/.cache/tracker/db-version.txt/home/ismail/.cache/tracker/db-locale.txt/home/ismail/.cache/tracker/parser-version.txt/home/ismail/.cache/tracker/first-index.txt/home/ismail/.cache/tracker/locale-for-miner-apps.txt/home/ismail/.cache/tracker/last-crawl.txt/home/ismail/.mozilla/firefox/0g1wxsfn.default-release/AlternateServices.txt/home/ismail/.mozilla/firefox/0g1wxsfn.default-release/SiteSecurityServiceState.txt/home/ismail/.mozilla/firefox/0g1wxsfn.default-release/SecurityPreloadState.txt/home/ismail/.mozilla/firefox/0g1wxsfn.default-release/pkcs11.txt/home/ismail/.mozilla/firefox/0g1wxsfn.default-release/TRRBlacklist.txt/home/ismail/.local/lib/python3.8/site-packages/numpy-1.19.1.dist-info/top_level.txt/home/ismail/.local/lib/python3.8/site-packages/numpy-1.19.1.dist-info/entry_points.txt/home/ismail/.local/lib/python3.8/site-packages/numpy-1.19.1.dist-info/LICENSE.txt/home/ismail/.local/lib/python3.8/site-packages/numpy-1.19.1.dist-info/LICENSES_bundled.txt/home/ismail/.local/lib/python3.8/site-packages/numpy/core/include/numpy/multiarray_api.txt/home/ismail/.local/lib/python3.8/site-packages/numpy/core/include/numpy/ufunc_api.txt/home/ismail/.local/lib/python3.8/site-packages/numpy/LICENSE.txt/home/ismail/test.txt/home/ismail/example.txt

我们还可以使用以下扩展名根据扩展名搜索不同类型的文件。在下面的示例中,我们将搜索文件类型和扩展名,如Word文件(*.doc)、PDF文件(*.PDF)、PowerPoint文件(*.ppt)、Windows可执行文件(*.exe)和临时文件(*.tmp)。

#Word File$ find /home/ismail -name "*.doc"#PDF File$ find /home/ismail -name "*.pdf"#Power Point File$ find /home/ismail -name "*.ppt"#Windows Executable File$ find /home/ismail -name "*.exe"#Temporary File$ find /home/ismail -name "*.tmp"

根据位置查找文件

到目前为止,我们已经搜索了 /home/ismail 路径。但是我们可以通过提供下面的完整路径或绝对路径来搜索不同位置的文件。也将搜索给定路径的所有子目录。

$ find /etc -name "example.txt"$ find /var -name "example.txt"$ find /home -name "example.txt"

按类型查找文件

Linux操作系统中的所有东西都是一个文件。文件可以是不同的类型,如符号链接、字符设备等,而搜索特定的文件可以用 -type 参数根据下面的文件类型表。默认情况下,“查找”命令搜索并列出所有文件类型。

相关文章: 列出Ubuntu中apt的可升级包

文件类型 说明
f 文本、数据、二进制等常规文件。
d 号码簿
指向另一个文件或目录的符号链接
c 字符设备
b 阻止硬盘、存储设备等设备。
s 插座
p 命名管道

现在我们将只搜索常规文件,不包括目录、符号链接、字符或块设备 -type f .

$ find /etc -type f -name "example.txt"

根据大小查找文件

文件可以有不同的大小,其中大小通常与文件类型有关。我们可以根据大小搜索文件,这将非常有助于过滤不相关的结果。可以使用 -大小 选项和大小值,单位为MB、KB。使用以下大小描述符来定义大小。

大小 说明
c 字节
k 千字节
M 兆字节
G 千兆字节
b 512字节块

在下面的示例中,我们将搜索大小大于1000MB的文件。

$ find /etc -size +1000M -name "example.txt"

我们也可以搜索那些大小小于1000MB的文件 -size -1000MB .

$ find /etc -size -1000M -name "example.txt"

根据修改、访问和更改日期查找文件

可以根据文件的修改、访问和更改时间来搜索文件。但是为了可靠地完成此操作,文件系统应该相应地设置这些修改、访问和更改时间。这个 -mtime 选项用于指定时间信息。这个 + 符号是用来表示之前的时间和时间 - 符号是用来表示之后的时间。

在下面的示例中,我们将搜索 *.txt 10天前修改的文件。

$ find / -mtime +10 -daystart -name "*.txt"

在下面的示例中,我们将搜索*.txt扩展名,该扩展名在10天之前修改过。

$ find / -mtime 10 -name "*.txt"

根据所有者查找文件

find命令的另一个有用功能是根据文件的所有者查找文件。它们可以是用户所有者或组所有者。可以使用 -user 选项和组所有者可以用 -group 选项。让我们搜索用户拥有的文件 ismail 在下面的示例中。

$ find / -user ismail$ find / -user ismail -name "*.cfg"

我们还可以使用以下命令搜索组所有者,其中包含这些组的文件 ismail 将被列出。

$ find / -group ismail$ find / -group ismail -name "*.txt"

根据权限查找文件

在Linux中,每个文件都有权限来管理对文件的访问。find命令可用于根据文件的当前权限搜索文件。这个 -perm 选项用于指定权限,如775。

$ find /var/ww -perm 644 -name "*.php"

查找空文件

find命令提供 -empty 用于查找空文件的选项。为了匹配空文件,可以提供文件名或不提供文件名。

$ find /home/ismail -empty

或者我们可以找到一些特定的文件类型,比如*.txt文件,这些文件是空的,不包含任何数据。

$ find /home/ismail -empty -name "*.txt"

对创建的文件运行命令

find是一个非常高级的命令,您可以在其中对找到的文件运行或执行不同的命令。这个 -执行 选项用于在搜索结果中运行指定的命令。 {} 用于表示搜索结果或创建的文件。阿尔索 ; 添加到命令末尾以防止出错。在下面的示例中,我们将搜索文本文件并将其内容打印到终端。在使用{}时,它将被替换为背景中的文件名,以便防止错误,特别是带有空格的文件名使用单引号或双引号将非常有用。

$ find . -name "*.txt" -exec cat '{}' ;

查找和删除文件

find命令还提供了轻松删除已创建文件的功能。这对于轻松删除临时文件或备份文件非常有用。这个 -delete 选项将用于删除匹配的文件。使用此选项时要小心。

$ find . -name "*.txt" -delete$ find . -name "*.bak" -delete$ find . -name "*.tmp" -delete

将搜索结果放入文件

您可能希望存储搜索结果并稍后使用或发送其他搜索结果。这可以通过将搜索结果放入或重定向到文件中来实现。我们将把输出重定向到一个名为 find.txt .

$ find . -name "*.txt" > find.txt
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享