一个常见的问题是您找不到放置在某处的文件。在Linux下工作时,无论发行版如何,许多GUI选项都使您可以搜索文件。但是,在许多情况下,只有命令行终端,尤其是在管理服务器或使用SSH访问系统时。如果找不到文件,则必须使用Linux上的命令行应用程序进行搜索。
本文向您展示了如何使用终端机(Ubuntu OS中的命令行应用程序)查找文件。有三种well-known方法可在 shell 上搜索文件:
- 使用找命令
- 使用定位命令
- 使用格列普命令
查找和定位命令用于在系统中搜索文件,而grep用于根据包含的文本搜索文件。 “查找”是一种较慢的方法,但是包含多个搜索条件,而“定位”不包含那么多条件,但是比“查找”要快得多。
让我们开始该过程。我们将使用Ubuntu 18.04 LTS来描述本文提到的过程。
方法1:使用查找命令
查找是一种高度灵活的命令,用于根据各种条件搜索文件。当您搜索不记得文件名的文件时,这是一个非常有用的工具。使用“查找”命令,您可以基于文件和文件夹名称,创建日期,修改日期和权限进行搜索。您可以在一个“查找”命令中组合这些多个条件。这是一个功能强大但速度较慢的搜索工具。
该命令的一般语法为:
$ find /path/to/file/ -iname filename
搜索特定目录中的文件
您可以使用“查找”命令在特定目录中搜索所有文件。通用语法为:
$ find /path/to/file/
例如,要找到该文件下的所有文件/home /tin /下载/目录,通过按以下方式启动终端Ctrl + Alt + T然后在终端中运行以下命令:
$ find /home/tin/Downloads/
搜索当前目录中的文件
要在当前目录中搜索文件,请使用
$ find .
要在当前目录下搜索名为“softwares”的文件,请在Terminal中使用以下命令:
$ find . -iname Softwares
使用通配符搜索
您还可以使用通配符来查找与查询匹配的文件。通用语法为:
$ find /path/to/file/ -iname filename*
例如,要搜索以单词“cent”开头的文件,请在终端中运行以下命令:
$ find /home/tin/ -iname cent*
搜索空文件
您也可以使用“查找”命令搜索空文件。通用语法为:
$ find /path/to/file/ -iname -empty
例如,在/home /tin目录,在终端中运行以下命令:
$ find /home/tin/ -empty
根据日期和时间进行搜索
使用“查找”命令,您还可以根据文件的访问或修改时间来搜索文件。您可以使用多种时间来搜索文件:
- mtime(修改时间):上次修改文件内容的时间。
- atime(访问时间):上次访问文件的时间。
- ctime(更改时间):上次修改文件属性的时间。
例如,要搜索不到两天前修改的当前目录中的文件,请在终端中运行以下命令:
$ find . -mtime -2
要搜索不到两天前访问的文件,请在终端中运行以下命令:
$ find . –atime -2
要搜索少于两天前更改的文件,请在终端中运行以下命令:
$ find . –ctime -2
根据文件大小搜索
例如,要搜索大于5MB的文件,可以在终端中使用以下命令:
$ find . –size +5M\
根据文件权限进行搜索
它用于查找具有特定权限的文件。通用语法为:
$ find /path/to/file/ -type -perm mode
哪里:
类型参数包括d要么F用于指定文件类型的值。d用于目录和F仅用于文件。
模式可以具有数字权限(例如777、655 ..等)或符号权限(例如u = x,a = r + x)。
例如,要搜索许可为644的文件,可以在终端中使用以下命令:
$ find . –type f –perm 644
方法2:使用定位命令
还有另一个命令Locate可用于在Linux中搜索文件。它没有“查找”实用程序提供的搜索条件那么多,但是比“查找”实用程序更好,更快。背后的原因是后台进程实际上在您的系统中运行,并在其自己的数据库中搜索并存储新文件。与“查找”命令不同,它不会在本地硬盘上搜索文件和目录,而是在自己的数据库中搜索它们。应该定期更新其数据库,以使搜索实用程序正常工作。
安装定位
默认情况下,Linux OS中未安装“查找”。您将需要手动安装它。按Ctrl + Alt + T启动终端,然后以sudo键入以下命令以安装“定位”实用程序:
$ sudo apt-get install locate
安装完成后,您可以立即使用“定位”实用程序。
该命令的一般语法为:
$ locate –i filename
其中-i用于忽略大小写区别。
搜索文件
例如,要搜索文件名“centos”,请在终端中使用以下命令:
$ locate –i centos
它将搜索文件名中包含字符串“centos”的所有文件。
搜索多个文件
您也可以同时搜索多个文件名。例如,在终端中使用以下命令搜索两个文件“sdn.txt”和“centos”:
$ locate –i sdn.txt centos
使用通配符搜索
您也可以使用通配符查找与查询匹配的文件。例如,要搜索以“.iso”结尾的所有文件,请在终端中使用以下命令:
$ locate –i *.iso
更新定位数据库
定位命令依靠其数据库来工作,因此需要定期更新。在终端中运行以下命令以更新定位实用程序数据库:
$ sudo updatedb
方法3:使用Grep命令
尽管Grep不能直接在您的系统中搜索文件,但是它可以用来搜索文本。但是,您可以使用它来显示包含与搜索查询匹配的特定字符串的文件的名称。要搜索字符串,必须将其用双引号引起来。
该命令的常规语法为:
$ grep [选项] [模式] [/路径/到/文件]
哪里[选项]参数包含用于控制搜索和[图案]包含我们要搜索的字符串。
如果要查找包含某个单词的文件(怀疑该单词可能在任何特定目录中),则可以在终端中使用上述命令语法进行搜索。
例如,要搜索包含单词“tintin”的文件,我们认为该文件可能在我们的文件中资料下载文件夹,我们可以使用以下命令找到该文件。
$ grep -r –i “tintin” /home/tin/Downloads
哪里
-i用于忽略大小写区别
-r用于递归搜索指定目录
搜索多个单词
您也可以同时搜索多个字符串。您必须在字符串之间使用反斜杠“\”和管道符号“|”字符。
例如,要搜索两个字符串“tintin”和“ping”,我们可以在Terminal中使用以下命令:
$ grep –r –I “tintin\|ping” /home/tin/Downloads
因此,这就是在Ubuntu中如何使用命令行搜索文件的简要概述。在本文中,我们已经看到了三种有用的命令行方法来搜索文件。您可以根据搜索速度和条件选择任何一种方法。