最强Linux命令,linux常用命令指南——查找文件我最强:find

本文详细介绍Linux下的find命令使用方法,包括查找文件、统计与删除文件等实用技巧。通过具体示例,帮助读者掌握find命令的强大功能。

2.3.2 查找文件我最强:find

2.3.2.1 find查找常用命令示例

find / -name 'wfy.txt'

# 从根目录下开始查找文件wfy.txt

find . -name '*fy.txt'

# 当前目录下,查找fy.txt后缀的文件

# “.”表示当前目录,"*"表示任意长度字符

find / -type f -size +500M

# 从根目录开始查找,500M以上文件

# / :根目录

# . : 当前目录

# -type f: f为普通文件类型,f改为d则是目录文件,l则是符号链接文件,-type 还有其他参数,不在这里一一列举

# -size +500M :500MB以上

# 一般磁盘空间不够,删除垃圾文件时会使用到此命令

find . -type f -size +1k

# 查找当前文件夹下超过1k的文件,注意k是小写。

find . -type f -mtime -30

# 查找当前目录下30天之内修改过的文件

# -mtime:代表修改时间,最常用,类似参数有-atime、-ctime

# -atime:代表访问时间,查看过就算

# -ctime:文件状态改变时间

# -30:代表30天以内,30为n,数字自己填写

# +30:30天以前

# 30:距今第30天

find /var/log/ -mtime +30 -name '*.log'

# 查找指定目录/var/log/ 下30天以前的log文件

find /etc ! -type f

# 查找 /etc 目录下不是普通文件的 文件

# "!":感叹号,取反

find /etc ! -type l -mtime -30

# 查找/etc 目录下不是符号链接文件,并在30天内被修改过的文件

find /etc -maxdepth 1 ! -type l -mtime -30

# 查找/etc 第一层目录下不是符号链接文件的文件,并在30天内被修改过

# -maxdepth : 前面du学过,指定目录层级,-maxdepth 1代表第1层,-maxdepth 2代表延伸到第二层

-maxdepth 可能有点不好理解,所以截了个示例图

c8d4354d7d65135b4930ac36020b946b.png

2.3.2.2 使用find 组合命令:统计与删除

基本常用的find命令都已经讲完了,再说下运维中可能常用的一个组合命令,利用find删除N天以前的文件或日志。

先用wc -l来统计下log数量,再删除看看

find / -name '*.log' -mtime +300 | wc -l

# 从根目录下开始搜索300天之前的log文件,并统计数量

# “|”:管道符,将前面查到的数据作为输入源给后面的命令

9291468656aa2a8a3b32e28445220fb3.png

第一种删除方式:-exec

find / -name '*.log' -mtime +300 -exec rm {} \;

# 查找30天以前的log文件,使用-exec加rm将其删除

# 再使用上面的命令重新查看一次

find / -name '*.log' -mtime +300 | wc -l

37445b1e81a42bdd61886af923b8a69e.png

第二种删除方式:-ok

find / -name '*.log' -mtime +200 -ok rm {} \;

# -ok : 询问删除,y删除,n不删除,回车默认不删除

76afe853af10db8acfad93a98bd94aa8.png

91ab7b5f72b56a44a92df54e54b005aa.png

第三种删除方式:xargs

依次执行查看结果

find / -name '*.log' -mtime +100 | wc -l

find / -name '*.log' -mtime +100 | xargs rm -f

# xargs : 命令传递参数过滤器,与管道符“|”一同使用,将前面的命令传递给后面的命令使用

find / -name '*.log' -mtime +100 | wc -l

f87692f0274ca0e14c02d9c4116cc144.png

2.3.2.3 find与xargs的组合使用

对于50天前的log文件进行详情查看

find / -name '*.log' -mtime +50 | xargs ls -l

# 利用xargs + ls -l 命令来进行文件的详细属性查看

ce47124c0122c1c5c15dae442604e32a.png

移除50天前的文件

mkdir /logback

# 创建根目录下的 /logback文件夹

find / -name '*.log' -mtime +50 | xargs -i mv {} /logback

# 将50天前的所有log文件移动到 /logback 文件夹下

# xargs -i + {},将前面查找到的文件都作为参数给mv命令执行

ls -l /logback

# 查看 /logback 下所有文件详情

53ab2cd05f1a761764e2c5d8ee6cfe55.png

2.3.2.4 find下xargs与exec的区别

区别一:

-exec,是将查找到的结果文件名逐个传递给后面的命令执行,文件多会导致效率低;

xargs,则是一次性传递,效率较高,并可使用-n参数控制传递文件个数。

区别二:

-exec,文件名有空格等特殊字符也照常处理;

xargs,处理特殊的文件名(例如文件名有空格)需要采用特殊的处理方式(find . -name "*edu" -pringt0| xargs -0 ls -l)

验证区别一,示例如下:

find /logback -name '*.log' -exec echo yaomaomao {} \;

find /logback -name '*.log' | xargs echo yaomaomao

481c965f671e07d04030b3fada4dec14.png

可以看到使用-exec每次获得一个文件输出一次,xargs则只输出了一行。

xargs还可以用-n参数控制每次输出的文件个数

find /logback -name '*.log' | xargs -n5 echo yaomaomao

0368b9b9b069c79cdc1c0751f2f1bf5a.png

可以看到,每行输出5个参数(文件名),不足的行输出剩下的。

验证区别二,示例如下:

touch yaomaomao.txt;touch "yaomaomao centOS 7";ll yaomaomao*

# 小技巧:使用“;”分号可以一次性执行多个命令

# 注意:查看和创建带有空格的文件时,使用引号括起来

9733e1746ee9edfbafb8c8605a12813b.png

find . -name "yaomaomao*" -exec ls -lh {} \;

# 正常查找出来

find . -name "yaomaomao*" | xargs ls -lh

# 可以看到使用此命令报找不到那个文件或目录

find . -name "yaomaomao*" -print0 | xargs -0 ls -lh

# 正常查找

27f18bb42fa757fe60da3f21dd83ce92.png

其实find还有很多强大的功能,截两张图大家就知道了

44ce9a8066800ccff423d50812dfb302.png

60f0af0b174a8456b2369fc5894cbcb8.png

这本书就是我开头推荐的《核心系统命令实战》。

公众号注册的比较晚,没有评论功能,所以一般用来发长文。

知识星球相当于技术朋友圈,有问题大家可以提问,讨论。

欢迎关注我的公众号:姚毛毛的博客

欢迎加入我的知识星球,目前免费哦。

知识星球:姚毛毛的私密花园

标签:文件,xargs,30,log,linux,查找文件,常用命令,find,name

来源: https://www.cnblogs.com/yaomaomao/p/11556130.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值