Linux教程 | 如何从 Linux 命令行搜索文件
使用 GUI 时,搜索文件相对容易。但在某些环境(如无 GUI 服务器)中,您需要使用命令行搜索文件。
Linux中有一个功能强大的命令,可以帮助您搜索名为 的文件和文件夹。在本文中,我们将通过一些示例来讨论该命令。find
find
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*
输出
现在,假设我们要查找具有特定扩展名的文件,例如 .我们将修改命令,如下所示:.html
find . -type f -name *.html
输出
如何搜索隐藏文件
隐藏文件由文件名开头的点表示。它们通常是隐藏的,但可以在当前目录中查看。ls -a
我们可以修改如下所示的命令以搜索隐藏文件。find
find . -type f -name ".*"
输出
如何搜索日志文件和配置文件
日志文件通常具有 扩展名 ,我们可以像这样找到它们:.log
find . -type f -name "*.log"
输出
同样,我们可以搜索如下配置文件:
find . -type f -name "*.conf"
如何按类型搜索其他文件
我们可以通过提供以下命令来搜索字符块文件:c
-type
find / -type c
同样,可以使用以下命令找到设备块文件:b
find / -type b
如何搜索目录
在下面的示例中,我们找到了名为 .请注意,我们使用的是 .lib
-type d
find . -type d -name "lib*"
输出
💡 提示:我们可以通过查看 输出中的标志来识别目录。d
ls -lrt
如何按大小搜索文件
该命令的一个非常有用的用法是根据特定大小列出文件。find
其他单位包括:
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天。
以下是我的主目录的内容:
让我们在我的主目录中应用一个示例。
find . -type f -name ".*" -mtime +10
使用 bash 脚本的实际示例find
我们可以与可以自动化的有意义的bash脚本组合或创建有意义的bash脚本。find
rm
mv
假设我们要创建一个脚本,将超过 7 天的日志文件移动到备份路径。从那里,它会删除早于 30 天的日志文件。我们可以创建一个脚本,并使用 .您可以在此处了解有关工作的更多信息。cron
cron
让我们看一下脚本:
#!/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 解释分号,因此我们用 .exec
find
exec
mv
rm
{}
;
\
共享脚本在存档和删除日志时非常有用。