《Linux运维总结:find命令高级用法详解》



一、基本用法

#1、查找空文件
find ./ -size 0 #查找当前目录下大小为0的文件
find -type f -empty # -type f指明了要查找的是文件

#2、查找空目录
find -type d -empty

#3、查找3天前更改过的文件
find ./ -mtime 3 

#4、查找3天内更改过的文件
find ./ -mtime -3 

#5、查找今天更改过的文件
find ./ -mtime 0 

#6、查找比sort.txt修改时间更新的文件
find ./ -newer sort.txt 

#7、查找比sort.txt访问时间更新的文件
find ./ -anewer sort.txt 

#8、查找5分钟之前访问过的文件
find ./ -amin  5 

#9、根据inode值删除文件
find . -inum 396401 -exec rm {} \;

#10、查找10分钟以内更改过和50分钟之前更改过的后缀为.txt的文件
find . '(' -mmin -10 -o -mtime +50 ')' -a -type f -a -name "*.txt"

二、高级用法

2.1、查找时排除文件或目录

#1、查找时排除文件
find . -name "*com"  ! -name "*.mp3" ! -name "*.mp4"

#2、查找时排除目录
#示例一:
find . -path ./tomcat-service -prune -o -name "*.txt"

#示例二:
find ./ ! -path "./basic-tools/*" ! -path "./check-tools/*" -type f  -name "*.txt"

#示例三:
#这里注意:
#圆括号()表示表达式的结合。即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。
#由于命令行不能直接使用圆括号,所以需要用反斜杠'\'进行转意(即'\'转意字符使命令行认识圆括号)。同时注意'\(','\)'两边都需空格。
find ./ \( -path "./basic-tools" -o -path "./check-tools" \) -prune -o -name "*.txt"

#3、指定多个目录下查询
#示例一:
find ./ \( -path "./basic-env*" -o -path "./check-tools*" \)  -a -name "*.txt" -print

#4、指定具有相同目录名称的目录下查找文件
find ./ -path "*/logs/*" -name "*.txt" -print

#5、多条件判断查找目录
#这里注意:-a 是and的缩写, 意思是逻辑运算符'与'(&&);-o 是or的缩写, 意思是逻辑运算符'或'(||), - not 表示非.
#如果目录basic-tools(即-a左边为真),则求-prune的值,-prune 返回真,'与'逻辑表达式为真(即-path './basic-tools*' -a -prune 为真),
#find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;
#如果目录basic-tools不存在(即-a左边为假),则不求值-prune ,'与'逻辑表达式为假,则在当前目录下查找所有txt后缀文件。
find ./ -path "./basic-tools*" -a -prune -o -name "*.txt" -print

2.2、查找指定目录层级限制文件或目录

-mindepth: 指定开始遍历搜索的最小深度。最小目录层级
-maxdepth :指定遍历搜索的最大深度。最大目录层级

#示例一:
find . -mindepth 1 -maxdepth 3 -type f -name "*.txt"

#示例二:
find ./ -mindepth 1 -maxdepth 3 ! -path "./basic-tools/*" ! -path "./check-tools/*" -type f -name "*.txt

2.3、对查找到的文件执行命令操作

#1、删除空目录
find . -type d -empty -delete

#2、将/opt/logs目录下后缀为.txt文件拷贝到/opt/log目录下
#下面命令中的大括号{}作为检索到的文件的占位符 ,而分号;作为命令结束的标志。因为分号是Shell中有特殊含义的符号,所以需要使用单引号括起来。
#每当find命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {},然后执行 -exec 后面的命令一次。
find /opt/logs -type f -name '*.txt' -exec cp {} /opt/log ';'

#在用户主目录下的所有后准为.txt的文件中检索字符串hello
find . -type f -name "*.txt" -exec grep -l hello {} ';'

#统计/var/log目录下后缀为.log的文件内容行数
# ; #可以执行多条命令
# \ #转义符,转义;使得这条命令结束
# {}#把find命令匹配到的每一次结果传递给{}
# -exec #执行
find /var/log -type f -name "*.log" -exec wc -l {} \;

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:Linux运维实战总结

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东城绝神

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

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

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

打赏作者

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

抵扣说明:

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

余额充值