Linux教程 | 如何从 Linux 命令行搜索文件

使用 GUI 时,搜索文件相对容易。但在某些环境(如无 GUI 服务器)中,您需要使用命令行搜索文件。

Linux中有一个功能强大的命令,可以帮助您搜索名为 的文件和文件夹。在本文中,我们将通过一些示例来讨论该命令。findfind

Linux 中的 find 命令是什么?

该命令可让您有效地搜索文件、文件夹以及字符和块设备。find

以下是该命令的基本语法:find

find /path/ -type f -name file-to-search

哪里

  • /path是预期找到文件的路径。这是搜索文件的起点。路径也可以分别表示根目录和当前目录。/.
  • -type表示文件描述符。它们可以是以下任何一种:

f– 常规文件, 如文本文件, 图像和隐藏文件.

d– 目录.这些是正在考虑的文件夹。

l– 符号链接。符号链接指向文件,类似于快捷方式。

c– 字符设备.用于访问字符设备的文件称为字符设备文件。驱动程序通过发送和接收单个字符(字节、八位字节)与字符设备进行通信。示例包括键盘、声卡和鼠标。

b– 阻止设备.用于访问块设备的文件称为块设备文件。驱动程序通过发送和接收整个数据块与块设备进行通信。示例包括 USB、光盘

  • -name是要搜索的文件类型的名称。

查找命令的示例

现在我们知道了命令的语法,让我们看一些例子。find

如何按名称或扩展名搜索文件

假设我们需要找到名称中包含“style”的文件。我们将使用此命令:

find . -type f -name style*

输出

Linux教程 | 如何从 Linux 命令行搜索文件

现在,假设我们要查找具有特定扩展名的文件,例如 .我们将修改命令,如下所示:.html

find . -type f -name *.html

输出

Linux教程 | 如何从 Linux 命令行搜索文件

如何搜索隐藏文件

隐藏文件由文件名开头的点表示。它们通常是隐藏的,但可以在当前目录中查看。ls -a

我们可以修改如下所示的命令以搜索隐藏文件。find

find . -type f -name ".*"

输出

Linux教程 | 如何从 Linux 命令行搜索文件
我的主目录中的隐藏文件列表

如何搜索日志文件和配置文件

日志文件通常具有 扩展名 ,我们可以像这样找到它们:.log

 find . -type f -name "*.log"

输出

Linux教程 | 如何从 Linux 命令行搜索文件

同样,我们可以搜索如下配置文件:

 find . -type f -name "*.conf"

如何按类型搜索其他文件

我们可以通过提供以下命令来搜索字符块文件:c-type

find / -type c

同样,可以使用以下命令找到设备块文件:b

find / -type b

如何搜索目录

在下面的示例中,我们找到了名为 .请注意,我们使用的是 .lib-type d

find . -type d -name "lib*"

输出

Linux教程 | 如何从 Linux 命令行搜索文件

💡 提示:我们可以通过查看 输出中的标志来识别目录。dls -lrt

Linux教程 | 如何从 Linux 命令行搜索文件

如何按大小搜索文件

该命令的一个非常有用的用法是根据特定大小列出文件。find

find / -size +250MB
在这里,我们列出了大小超过250MB的文件

其他单位包括:

  • G:千兆字节。
  • M:兆字节。
  • K: 千字节
  • b:字节。

只需将<单位类型>替换为相关单位即可。

find <directory> -type f -size +N<Unit Type>

如何按修改时间搜索文件

find /path -name "*.txt" -mtime -10 

  • -mtime +10 表示您正在寻找 10 天前修改的文件。
  • -mtime -10 表示少于 10 天。
  • -mtime 10 如果您跳过+ 或 - 这意味着正好10天。

以下是我的主目录的内容:

Linux教程 | 如何从 Linux 命令行搜索文件

让我们在我的主目录中应用一个示例。

find . -type f -name ".*" -mtime +10
Linux教程 | 如何从 Linux 命令行搜索文件
在这里,我们有10天前修改过的文件。

使用 bash 脚本的实际示例find

我们可以与可以自动化的有意义的bash脚本组合或创建有意义的bash脚本。findrmmv

假设我们要创建一个脚本,将超过 7 天的日志文件移动到备份路径。从那里,它会删除早于 30 天的日志文件。我们可以创建一个脚本,并使用 .您可以在此处了解有关工作的更多信息。croncron

让我们看一下脚本:

#!/bin/bash
# Script to move from logs older than 7 days to backup logs path: /app/backup_logs/ESB0*

# move ESB01 logs to backup
find /logs/esb01/audit  -name "*.tar.gz" -mtime +7 -exec mv {} app/backup_logs/ESB01/ \;

# Remove logs from backup path after 30 days
find /app/backup_logs/ESB01 -name "*.tar.gz" -mtime +30  -exec rm {} \;

请注意,我们正在与 一起使用。基本上,执行提供的命令(在我们的例子中)。 是保存命令结果的占位符。最后,我们提供 分隔符 。由于我们不希望 shell 解释分号,因此我们用 .execfindexecmvrm{};\

共享脚本在存档和删除日志时非常有用。

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!