阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

190次阅读
没有评论

共计 2088 个字符,预计需要花费 6 分钟才能阅读完成。

使用 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{};\

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

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计2088字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中