设为首页 收藏本站
查看: 272|回复: 0

[经验分享] linux文件查找利器 非find莫属

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-3-16 10:16:03 | 显示全部楼层 |阅读模式
昨天看到群里在很多群友讨论find命令,那么今天我就和大家聊聊工作中的find命令的使用:


一、find语法
Usage:find PATHNAME [-option] [-exec|-ok command] {} \;
  • PATHNAME:查找的路径名
  • [option]:可选择要匹配的参数
  • [-exec|-ok command]:将查找的文件执行command操作
  • {}:查找到的文件名
  • \;:反斜杠代表转义,分号代表结束符

二、find参数
  • -name

1
按文件名字查找



  • -perm

1
按文件权限查找



  • -user



1
按文件属主查找



  • -group

1
按文件属组查找



  • -nouser

1
查找无有效属主的文件,即文件的属组在/etc/groups中不存在



  • -nogroup

1
#查找无有效属组的文件,即文件的属主在/etc/groups中不存在




  • -mtime(mmin)  -n +n


1
按文件更改时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前



  • -atime(amin)  -n +n

1
按文件访问时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前



  • -ctime(cmin)  -n +n

1
按文件创建时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前



  • -never f1 !f2

1
查找更改时间比f1新但比f2旧的文件



  • -type [b| d| c| p| l| f]

1
查找块设备,目录,字符设备,管道、符号链接、普通文件



  • -size n[c]

1
查长度为n块[或n字节]的文件



  • -depth

1
查找于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到



  • -mount

1
查文件时不跨越文件系统mount点



  • -follow

1
如果遇到符号链接文件,就跟踪链接所指的文件



  • -prune

1
忽略某个目录,如果同时使用了-depth选项,那么-prune选项将被find命令忽略。



三、find案列

1、查找指定目录下大于300M的文件,并将其移动到指定的路径中
1
2
# find ~ -size +300M
# find ~ -size +300M -exec mv {} ~/sql/ \;



2、查找指定目录下大于300M的文件,并将其删除的两种方式
1
2
# find ./ -size +300M -delete
# find ./ -size +300M -exec rm -rf {} \;



3、查找指定目录下大于1G而小于1.5G的文件
1
# find ./ -size +1G -size -1.5G



4、查找指定目录下非.sh结尾的文件的两种方法
1
2
# find ./ -not -name '*.sh'
# find ./ ! -name '*.sh'



5、删除7天前对数据库的备份文件
1
# find /bakcup/ -type f -name '*.sql' -mtime +7 -exec rm -rf {} \;



6、查找当前目录下以.sh结尾的文件,但是排除子目录为script目录下的文件
1
# find . -path './script' -prune -o -name '*.sh'



7、查找当前目录下以.py结尾的文件,并将其修改为.pyc
1
# find ./ -name '*.py' -exec mv {} '{}c' \;



8、查找当前目录下所有文件,并把文件中的hello字符串替换成Hello
1
2
3
# echo 'hello world!' > test01.txt
# echo 'hello teacher!' > test02.txt
# find ./ -type f -exec sed -i 's@hello@Hello@g' {} \;   



四、find搭配日志重点阐述
  • 1、时间搜索

atime(access time):访问时间;指的是文件最后读取的事件,可以使用touch命令更改当前时间
ctime(change time):变更时间;指的是文件本身最后被变更的事件,变更动作是chmod、chgrp、mv等
mtime(modify time):修改时间,指的是文件内容最后被修改的事件,修改动作echo重定向、vim等
  • 2、时间语法

find PathName {-atime/-ctime/-mtime/-amin/-cmin/-mmin} [-/+]num
第一个参数:查找文件的路径名
第二个参数:前面的字母a、c、m分别表示访问、变更、修改;time为日期,min为分钟
第三个参数:不该符号表示符合这个值得,'-'表示以内的,'+'表示以前的
  • 3、时间小练习

  • 查找当前目录中,当天被访问过的文件:时间单位为day

1
# find ./ -atime 0



  • 查找当前目录中,距离此刻5分钟以前10分钟以内被修改过的文件:时间单位为min

1
# find ./ -mmin -10 -min +5



  • 另外补充一个额外的命令xargs
  • 此命令的使用很类似于find的exec参数,比如:

1
2
3
# find ./ -type f | xargs chmod 755
# find ./ -type f | xargs echo '' > /root/filename.log
# find ./ -type f | xargs rm -rf



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-47245-1-1.html 上篇帖子: linux学习之正则表达式sed 下篇帖子: linux进入救援模式的方法 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表