如何在Linux中使用命令行查找文件和文件夹
大多数人使用图形文件管理器在Linux中查找文件,例如Gnome中的Nautilus,KDE中的Dolphin和Xfce中的Thunar。但是,无论使用哪种桌面管理器,都有几种方法可以使用命令行在Linux中查找文件。
使用find命令
使用find命令可以搜索已知文件名的文件。该命令的最简单形式是在当前目录中搜索文件,并通过与提供的搜索条件匹配的子目录递归搜索文件。我们可以按名称,所有者,组,类型,权限,日期和其他条件搜索文件。
在提示符下键入以下命令将列出在当前目录中找到的所有文件。
find .
查找后的点表示当前目录。
要查找与特定模式匹配的文件,请使用-name参数。我们可以使用文件名元字符(例如*),但我们应该在每个字符前放置转义字符()或者将其用引号引起来。
例如,如果我们想在Documents目录中找到所有以pro开头的文件,则可以使用cd Documents /命令切换到Documents目录,然后键入以下命令:
find . -name pro\*
列出了当前目录中以pro开头的所有文件。
注意:find命令默认为区分大小写。如果我们要搜索的单词或者短语不区分大小写,请在find命令中使用-iname
选项。它是-name
命令的不区分大小写的版本。
如果find
没有找到符合我们条件的文件,则不会产生任何输出。
find命令具有许多可用于完善搜索的选项。有关find命令的更多信息,请在终端窗口中运行man find
并按Enter。
使用locate命令
查找命令比查找命令快,因为它使用以前建立的数据库,而查找命令在实际系统中搜索所有实际目录和文件。查找命令返回包含指定字符组的所有路径名的列表。
数据库是通过cron定期更新的,但是我们也可以随时自己更新它,以便获得最新的结果。为此,在提示符下键入以下命令:
sudo updatedb
出现提示时输入密码。
locate命令的基本形式是在文件系统中查找从根开始的所有文件,其中包含全部或者部分搜索条件。
locate mydata
例如,上述命令找到了两个包含mydata的文件和一个包含数据的文件。
如果要查找完全包含且仅包含搜索条件的所有文件或者目录,请使用带有-b选项的locate命令,如下所示。
locate -b ‘\mydata’
上面命令中的反斜杠是通配符,它提供了一种将非特定文件名中的通配符扩展为一组特定文件名的方法。通配符是一种符号,在计算表达式时可以用一个或者多个字符替换。最常见的通配符是问号(?)代表单个字符,而星号(*)则代表连续的字符串。在上面的示例中,反斜杠禁用了用* mydata *隐式替换mydata的操作,因此最终只能得到包含mydata的结果。
mlocate命令是locate的新实现。它索引整个文件系统,但搜索结果仅包括当前用户有权访问的文件。当我们更新mlocate数据库时,它将时间戳信息保留在数据库中。这使mlocate无需重新读取目录内容即可知道目录的内容是否已更改,并使对数据库的更新更快,对硬盘的要求也更低。
安装mlocate时,/ usr / bin / locate二进制文件更改为指向mlocate。要安装mlocate(如果它尚未包含在Linux发行版中),请在提示符下键入以下命令。
sudo apt-get install mlocate
注意:在本文后面,我们将向我们显示命令,该命令使我们可以确定命令的可执行文件所在的位置(如果存在)。
mlocate命令与标准locate命令使用的数据库文件不同。因此,我们可能需要通过在提示符下键入以下命令来手动创建数据库:
sudo /etc/cron.daily/mlocate
在手动创建数据库或者从cron运行脚本之前,mlocate命令将不起作用。
有关locate或者mlocate命令的更多信息,请在"终端"窗口中键入" manlocate"或者" man mlocate",然后按Enter。这两个命令显示相同的帮助屏幕。
使用which命令
which命令返回发出命令时调用的可执行文件的绝对路径。这对于在桌面,面板或者桌面管理器中的其他位置查找用于创建程序快捷方式的可执行文件的位置很有用。例如,键入命令"哪个firefox"将显示下图所示的结果。
默认情况下,which命令仅显示第一个匹配的可执行文件。要显示所有匹配的可执行文件,请在命令中使用-a
选项:
which -a firefox
我们可以一次搜索多个可执行文件,如下图所示。仅显示找到的可执行文件的路径。在下面的示例中,仅找到ps可执行文件。
注意:which命令仅搜索当前用户的PATH变量。如果搜索仅对root用户具有普通用户身份的可执行文件,则不会显示任何结果。
使用Whereis命令
whereis命令用于查找命令的二进制文件,源文件和手册页文件的位置。例如,在提示符下键入" whereis firefox"将显示结果,如下图所示。
如果只想显示可执行文件的路径,而不要显示源代码和手册页的路径,请使用-b选项。例如,命令whereis -b firefox
将仅显示/ usr / bin / firefox
作为结果。这很方便,因为与搜索该程序的源代码和手册页相比,我们搜索该程序的可执行文件的可能性更高。我们还可以仅搜索源文件(-s
)或者仅手册页(-m
)。
了解Whereis命令和which命令之间的区别
whereis命令显示命令的二进制文件,源代码和手册页的位置,而where命令仅显示命令的二进制文件的位置。
whereis命令在特定目录列表中搜索二进制文件,源文件和man文件,而where命令则搜索当前用户PATH环境变量中列出的目录。对于whereis命令,可以在命令手册页的FILES部分中找到特定目录的列表。
当涉及默认显示的结果时,whereis命令显示其找到的所有内容,而which命令仅显示其找到的第一个可执行文件。我们可以使用前面讨论过的-a
选项对which命令进行更改。
因为whereis命令仅使用硬编码到命令中的路径,所以我们可能并不总是找到所需的内容。如果我们正在搜索某个程序,我们认为可能会将其安装在whereis命令的手册页中未列出的目录中,则可能需要将which命令与-a
选项一起使用,以查找整个命令中所有出现的命令。