如何在Ubuntu命令行上查找文件
使用计算机时的一个典型问题是您找不到存储在某处的文件。许多 GUI 程序允许您在 Linux 下工作时搜索文件,无论发行版如何。但是,在某些情况下,您只能访问命令行终端,特别是在管理服务器或使用 SSH 访问系统时。如果找不到文件,则必须使用 Linux 上的命令行实用程序来搜索它们。
在本教程中,您将学习如何使用 Ubuntu 操作系统中的命令行实用程序终端来查找文件。在 shell 中,有三种众所周知的方法来搜索文件:
- 使用查找命令查找文件
- 使用Locate命令查找文件
- 使用Grep命令在文件中搜索
Find 和 Locate 命令用于搜索系统上的文件,而 grep 用于根据文件包含的文本搜索文件。 Find 是一种较慢的方法,具有多个搜索条件,而 Locate 包含的条件没有那么多,但比 Find 快得多。
我们先从方法说起。我们使用 Ubuntu 22.04 LTS 来描述本文中的过程,但它也适用于其他 Ubuntu 版本。
方法一:使用查找命令
Find 是一个高度灵活的命令,可以根据各种条件搜索文件。当您搜索不记得文件名的文件时,这是一个非常有用的工具。使用“查找”命令,您可以根据文件和文件夹名称、创建日期、修改日期和权限进行搜索。您可以将这些多个条件组合到一个“查找”命令中。它是一个非常强大但速度较慢的搜索工具。
该命令的一般语法是:
find /path/to/file/ -iname filename
搜索特定目录中的文件
您可以使用“查找”命令搜索特定目录中的所有文件。一般语法是:
find /path/to/file/
例如,要查找 /home/tin/Downloads/ 目录下的所有文件,请按 Ctrl+Alt+T 启动终端,然后在终端:
find /home/tin/Downloads/
搜索当前目录下的文件
要搜索当前目录中的文件,请使用
find .
要在当前目录下搜索名为“softwares”的文件,请在终端中使用以下命令:
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(更改时间):上次修改文件属性的时间。
例如,要搜索当前目录中不到 2 天前修改的文件,请在终端中运行以下命令:
find . -mtime -2
要搜索 2 天以内访问过的文件,请在终端中运行以下命令:
find . -atime -2
要搜索 2 天以内更改的文件,请在终端中运行以下命令:
find . -ctime -2
根据文件大小搜索
例如,要搜索大小大于 5MB 的文件,我们可以在终端中使用以下命令:
find . -size +5M\
根据文件权限进行搜索
它用于查找具有特定权限的文件。一般语法是:
find /path/to/file/ -type -perm mode
在哪里 :
Type参数包括用于指定文件类型的d或f值。 d 表示目录,f 仅表示文件。
模式可以是数字权限(例如 777、655.. 等)或符号权限(例如 u=x、a=r+x)。
例如,要搜索权限为644的文件,我们可以在终端中使用以下命令:
find . -type f -perm 644
方法2:使用定位命令
还有另一个命令 Locate,可用于在 Linux 下搜索文件。它提供的搜索条件不如“查找”实用程序那么多,但它比“查找”实用程序更好、更快。这是因为后台进程在您的系统中运行,并在其自己的数据库中搜索和存储新文件。与“查找”命令不同,它不会在本地硬盘驱动器中搜索文件和目录,而是在自己的数据库中查找它们。数据库必须定期更新才能使搜索程序发挥作用。
安装定位
Linux 操作系统中默认未安装 Locate。您需要手动安装它。按 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
更新定位数据库
locate命令依赖于其数据库来工作,因此需要定期更新。在终端中运行以下命令以更新定位实用程序数据库:
sudo updatedb
方法三:使用Grep命令
Grep 不用于直接搜索系统中的文件,而是用于文本搜索。但是,您可以使用它来显示包含与您的搜索查询匹配的特定字符串的文件的名称。要搜索字符串,必须将其括在引号中。
该命令的一般语法是:
$grep [选项] [模式] [/path/to/file]
[options] 参数包含控制搜索的通用选项,[pattern] 包含我们要搜索的字符串。
如果您正在查找包含您怀疑位于特定目录中的单词的文件,您可以使用上述命令语法在终端中搜索它。
例如,要搜索包含单词“tintin”并且我们假设位于“下载”文件夹中的文件,我们可以使用以下命令来查找该文件。
grep -r –i "tintin" /home/tin/Downloads
在哪里
-i 用于忽略大小写区别
-r 用于递归搜索指定目录
搜索多个单词。
您还可以同时搜索多个字符串。您必须使用反斜杠“\”和管道符号“|”字符串中的字符。
例如,要搜索两个字符串“tintin”和“ping”,我们可以在终端中使用以下命令:
grep -r -i "tintin\|ping" /home/tin/Downloads
以上是如何使用命令行在 Ubuntu 中搜索文件的简要概述。本文教给我们三种有用的命令行搜索文件的方法。根据您的搜索速度和条件,您可以选择其中一种方法。