网站搜索

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


如果您在 Linux 发行版中查找文件时遇到困难,有一个内置的命令行工具可以让您的工作变得更加轻松。

我已经使用 Linux 几十年了,尽管命令行对我来说是第二天性,但我仍然选择使用 GUI 工具,因为它们往往比基于终端的工具效率更高。然而,有一项任务我总是使用命令行——那就是查找文件。

是的,有很多 GUI 工具可用于此目的,并且许多桌面环境将该功能集成到其应用程序菜单中。但是,我发现其中一些选项不太适合定位文件,并且它们的索引有时会导致系统速度变慢。由于这些原因,我更喜欢打开终端窗口并找到有问题的文件。

这种方法的一个缺点是,与使用 GUI 不同,一旦找到文件,您就必须手动打开它。 GUI 工具将找到该文件,然后您只需单击(或双击)即可将其打开。使用命令行选项,您将看到文件的位置。然后,您需要打开关联的应用程序,并通过应用程序的“文件”>“打开”菜单打开文件。然而,这个手动过程是我愿意接受的对命令行工具的速度和准确性的权衡。

让我向您展示如何使用该工具。

如何从 CLI 查找文件

您需要什么:完成此任务您唯一需要的是几乎任何 Linux 发行版的运行实例。我使用 find 命令有两个原因:它是默认安装的,并且易于使用。让我向您展示在 Linux 中查找文件是多么容易。

1.find命令的基本使用

从桌面菜单打开终端窗口。打开终端应用程序后,键入基本 find 命令的语法:

find -name FILE

在上面的命令中,FILE 是您要搜索的文件的名称。

现在,让我解释一些事情。首先,您“命名”以匹配模式。您可以使用不带名称的find,但它不会找到您要查找的文件,除非您位于包含该文件的正确目录中。当然,这种限制可能几乎没有用处,因此请始终记住将 -name 添加到命令中,无论您在何处运行该命令,它都会找到有问题的文件。

其次,FILE 区分大小写。如果您正在查找名为 MyFile 的文件并使用命令 find -name myfile,find 将无法找到该文件。第三,find 命令只能搜索您有权查看的目录中的文件。如果 find 遇到您无权访问的目录,您将收到权限被拒绝错误。

2. 诡计与陷阱

假设您正在查找 MyFile.txt。您可以简单地运行命令:

find -name MyFile.txt

但是,如果您有名为 MyFile.txt、MyFile、odt 和 MyFile.rtf 的文件,并且您想知道它们全部位于何处,该怎么办?在这种情况下,您可以使用 * 通配符,如下所示:

find -name MyFile.*

现在,find 将搜索 MyFile 的所有实例并报告它们的位置。

然而,这个技巧有一个陷阱。假设您的主目录(也称为 ~/)中有 MyFile.rtf,下载目录中有 MyFile.odt,文档目录中有 MyFile.txt。

如果您在主目录中并发出命令 find -name MyFile.*,该命令将在主目录中查找 MyFile.rtf 并停止查找。

但是,如果您位于系统的根目录(又名 /)中,并且运行 find 命令,它将找到所有三个文件,输出类似于以下内容:

./jack/MyFile.rtf
./jack/Downloads/MyFile.odt
./jack/Documents/MyFile.txt

还有另一种方法可以绕过这个陷阱,您可以将文件名放在引号中,如下所示:

find -name "MyFile.*"

即使您位于主目录中,find 也会在找到文件的第一个实例后继续搜索。我的建议是养成始终使用引号作为文件名的习惯。

这就是在 Linux 上通过命令行查找文件是多么容易。

相关文章