详解Linux——find命令(stat+exec+xargs+dd命令)

find命令

在Linux操作系统中,find命令主要用于进行文件的搜索
语法:find [路径] [选项] [选项的参数]
常用选项:

  • -name:根据文件的名称搜索文件,支持通配符*
  • -type:根据文件类型,f代表普通文件,d代表文件夹

1.根据名称查找文件

获取 /etc目录下 所有后缀为.d的目录
只显示前15条

命令:find /etc -name "*.d" -type d | head -15

在这里插入图片描述

/etc目录下,查找包含 host关键字的普通文件

命令:finde /etc -name "host*" -type f

在这里插入图片描述

2. 根据文件修改时间查找文件

在这里插入图片描述

  • 创建时间:代表这个文件什么时候被创建
  • 访问时间:代表这个文件什么时间被访问
  • 修改时间:代表这个文件什么时间被修改

stat命令

语法:stat 文件名
作用:获取文件最后的修改时间

在这里插入图片描述

  • Access: 表示文件的访问时间,当文件被访问时,更新这个时间
  • Modify:表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间
  • Change:表示文件的状态时间,当文件的状态被修改时,更新这个时间,比如文件的链接数,大小,权限,Blocks数

一个文件刚创建的时候,这三个时间是一样的,因为我们在创建它的同时修改了它的内容,所以它的大小,Blocks也发生了变化,也相当于一次访问。

touch命令

创建文件是设置修改时间
语法:touch -m -d "日期时间格式" 文件名称

作用:

  1. 如果文件不存在,则自动创建该文件,然后设置其最后的修改时间
  2. 如果文件存在,touch命令就是修改文件的最后修改时间

在这里插入图片描述

根据文件的最后修改时间搜索文件

在这里插入图片描述

语法:find [路径] -mtime +days/-day3

  • -mtime:根据文件的最后修改时间搜索文件
  • +:加号,代表搜索几天前的文件
  • -:减号:代表搜索几天以内的文件信息

示例1:搜索2天以前的文件信息(注意:两天前是不包含当天的,也就是今天8号,两天前就是5号)

命令:find [路径] -mtime +2

在这里插入图片描述

示例2:
搜索3天内的.txt文件
注意:三天内式包含当天的,比如今天8号就包含6、7、8号
命令:find ./ -name "*.txt" -mtime -3

在这里插入图片描述

3. 根据文件大小查找文件

dd 命令

基本语法:dd if=/dev/zero of=文件名称 bs=1M count=1
主要功能:在Linux系统中,生成某个大小的测试文件

选项说明:
if代表输入文件
of代表输出文件
bs代表字节为单位的块大小。
count代表被复制的块。
其中/dev/zero是一个字符设备,会不断返回0值字节。

示例1:使用dd创建一个大小为1M大小的 tmp.txt文件
命令:dd if=/dev/zero of=tmp.txt bs=1M count=1

在这里插入图片描述

示例2:使用dd创建一个5M大小的demo.c文件

在这里插入图片描述

按文件大小查找

语法:find [路径] -size [文件大小,常用单位:K,M,G]

  • k:KB

  • M:MB

  • G:GB

  • size:搜索大小等于size值的文件

  • -size:搜索 [0,size) 值

  • +size:(size,无穷大)

示例1:搜索单前目录下大小为5M的文件

命令:find ./ -type f -size 5M
在这里插入图片描述
示例2:搜索单前目录下大小为5M以内的文件( 0 < = s i z e < 5 M 0<= size < 5M 0<=size<5M

命令:find ./ -type f -size -5M

在这里插入图片描述
示例3:搜索当前目录中,文件大于5M的文件

命令:find ./ -type f -size +5M

在这里插入图片描述

4. -exec和xargs

  • xargs
    是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

案例:删除Linux系统中/var/log 目录下20天以前的日志信息
在这里插入图片描述
正确删除方式1: 使用管道+xargs
命令:find /var/log -name "*.log" -mtime +20 | xargs rm -rf

可以理解为,xargs把管道里拿到的数据变成了 rm -rf的参数

在这里插入图片描述
正确删除方式2:使用find命令 + -exec选项

这里删除的是两天前的日志信息

命令:find /var/log -type f -name "*.log" -mtime +2 -exec rm -rf {} \;

-exec 选项可以理解为把 find查询的结果放到了 {}
\;就可以理解为这是 -exec的标识

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的三毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值