大多数情况下,您在 Linux 上寻找一个文件,但您并不确切知道它在系统磁盘上的真实位置。
有多种方法可以 在 Linux 命令行中查找文件. 最常见和最可靠的方法是使用 find 命令。
find 命令用途非常广泛,用途太多,但在这里我将重点关注按文件名查找文件。
我将解释如何使用“查找”命令:
- 使用文件名搜索文件
- 使用确切名称搜索文件
- 搜索特定模式的文件
- 搜索多个文件
- 从搜索结果中排除某些文件。
除此之外,我还将展示如何将 grep 命令与 find 命令的输出一起使用。 让我们首先从概述开始 find
命令。
实用程序“查找”查找与特定参数集(如文件名、修改日期、扩展名等)匹配的文件。它具有以下格式:
find path pattern
如果未指定路径,则搜索当前目录及其子目录。
使用文件名搜索文件
使用文件名查找文件是 find 命令的常用操作。 这 -iname
无论大小写如何,选项都会查找文件。
为了 example,假设您有两个文件 abc.txt 和 ABC.txt。 两者名称相同,但情况不同。 使用 find 命令,您可以在结果中获得两个文件:
find -iname abc.txt
使用确切名称搜索文件
这 -name
选项区分大小写,与 -iname
选项,因此您将获得具有确切名称的文件。
为了 example让我们找一个文件名 abc.txt
:
find -name abc.txt
文件的名称可以由通配符组成,您将在本指南后面看到。
搜索具有特定模式的文件
您还可以过滤遵循给定模式的文件。 为此,您可以使用通配符。
例如,假设您正在查找系统上所有以“.conf”扩展名结尾的配置文件:
find /etc -type f -name "*.conf" | grep client.conf

同样的方法,你也可以 搜索具有相同名称但具有任何扩展名的文件 三个字符为:
find ~ -name "abc.???"

如果你有几个 包含公共字符串的文件名,比如说“VM”,这种情况下的 find 命令将如下所示:
find -name '*VM*'

到目前为止,我们已经使用了带有“find”命令的单个目录(主目录)。
你也可以 在多个目录中搜索 通过在 CLI 上指定它们:
find ~/Desktop/example1/ ~/Desktop/example2/ -name 'abc*.*'

搜索多个文件和多个模式
假设您想在一个目录中查找多个文件 .msi
和 .txt
作为文件类型。
在这里你需要同时使用 name
和 type
CLI 上的选项为:
find -type f ( -name "*.txt" -o -name "*.msi" )

在类似的方法中,您可以使用 extra 将上述命令扩展为更多文件 -o
选项。
从搜索结果中排除某些文件
find 命令还可以从搜索结果中排除某些类型的文件:
find -name '*abc*' -type f ( ! -name '*.msi' )

在这里,“查找”命令将查找名称中包含“abc”字符串的所有文件。 但是,它会过滤掉 .msi
文件类型。
“查找”命令的其他常见示例
您有更多选项可以与“查找”命令一起使用。 让我分享几个这样的例子:
系统报告磁盘空间不足? 像这样查找更大的文件:
find -size +2000M
使用上述命令,您可以找到占用空间超过 2000 兆字节的文件。
如果您需要保存您的发现以供以后调查,请将其重定向到一个文件:
find -name '*abc*' -type f ( ! -name '*.msi' ) > mysearch.txt

这 type
find 命令的选项打开了许多机会。
您可以将它与不同类型文件的不同文件描述符结合使用。 为了 example’f’ 表示常规文件, ‘d’ 表示目录, ‘l’ 表示符号链接等。
find /var/log -type f -name "*.log"
结论
在本指南中,我解释了如何使用 find 命令按文件名搜索文件。 您看到了多种缩小搜索路径的方法,最重要的是,如何结合“通配符”进行模式搜索。
find 命令还有很多用途。 就像您可以使用它来查找最近修改的文件一样。 如果您有兴趣,这里有一些更常见的示例。
您始终可以使用“查找”命令搜索手册页以深入了解各种选项。