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

linux shell中find的使用

[复制链接]

尚未签到

发表于 2018-8-21 13:18:54 | 显示全部楼层 |阅读模式
  一、工作方式
  沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
  二、基本用法
  (1)根据文件名或正则表达式匹配搜索
        find  搜索路径 -name "文件名"  eg.
  ①在当前目录下搜索以.txt结尾的文件,默认使用‘\n’为定界符,分隔文件名(即一个结果一行)
         find . -name "*.txt"  ②在/opt目录下搜索以.pdf结尾的文件,使用-print指定‘\0’作为定界符,分隔文件名
         find /opt -name "*.pdf" -print0   ③在上级目录下搜索文件名包含pdf,并且不区分大小 , -iname
         find .. -iname "*pdf*"  ④在当前目录下搜索以.txt或则.pdf的文件, 或 -o
         find . \(  -name "*.txt" -o -name "*.pdf"  \)  ⑤当前目录下,以linux开头并且以.pdf结尾的文件, 且 -a
         find . \(  -name "linux*"  -a  -name "*.pdf"  \)  ⑥-name是以文件名进行匹配,而-path将文件路径作为一个整体进行匹配
  在/home目录下搜索包含sys的文件或则路径
         find /home -path "*sys*"  (2)否定参数
  使用 ! 进行参数的否定
  eg.
  ①在当前目录下搜索除了以.txt结尾的文件
         find ! -name "*.txt"  (3)基于目录深度的搜索
  -mindepth 至少开始搜索的深度
  -maxdepth 最多搜索的深度
  eg.
  ①从第二层开始搜索
         find / -mindepth 2 -name "*.pdf"  ② 最大搜索4层
         find / -maxdepth 4 -name "*.txt"  ③只搜索一层
         find / -maxdepth -name "*.chm"  (4)让find跳过特定的目录
  -prune 跳过指定目录
  eg.
  ①在/opt/eclipse目录下搜索文件以.ini结尾的文件,并且跳过目录dropins目录
         find /opt/eclipse \( -name "dropins" -prune  \) -o \( -name "*.ini"  \)  (5)根据文件类型
文件类型类型参数普通文件f符号文件l目录d字符设备c块设备b套接字sFIFO(管道)p        find -type 文件类型 commands  eg.         
  ①当前目录下查找文件
        find . -type f  ② 列出当前目录下的所有符号链接文件
        find . -type l  (6)根据文件时间戳
  访问时间:用户最近一次访问文件的时间
  修改时间:文件内容最后一次被修改的时间
  变化时间:文件元数据(metadata, 例如权限或所有权)最后一次改变的时间
天分  具体时间前的
  - 表示小于这个时间
  + 表示大于这个时间
访问时间atimeamin修改时间mtimemmin变化时间ctimecmin  eg.
  ①当前目录下最近7天内被访问过的文件
        find . -type f -atime -7  ②当前目录下被修改超过9天的文件
        find . -type f -mtime +9  ③当前目录下被修改超过3分钟的文件
        find . -type f -mmin +3  (7)基于文件大小
文件大小单位cbytew2 byteb块 (512byte)  k
1024 byteM1024 kG1024 M  eg.
  ①根目录下文件大小大于3K
        find / -type f -size +3k  ②根目录下文件大小小于2M
        find / -type f -size -2M  ③根目录下文件大小为2G
        find / -type -size 2G  (8)基于文件权限和所有权的匹配
  -perm 指定搜索的文件的权限
  -user 指定搜索某个用户的文件
  eg.
  ①当前目录下的具有644权限的py文件
       find . \( -type f -a -name "*.py" -a -perm 644 \)  ②当前目录下,属于用户root的文件
       find . -type f -user root  (9)结合find命令使用 -exec 选项
  使用-exec执行其他命令
  eg.
  ①将当前目录下的root用户的文件改为my用户的
        find . -type f -user root -exec chown my {} \;  {}是一个特殊字符串,和-exec一起使用时,{}将用每一find的结果进行替换
   ②将当前目录下所有的txt文件合并到一个文件中
        find . -type f -exec cat {} \; > all.txt  这里使用的是> 而没有使用>>,因为find命令的全部输出只是一个单一流,只有多个数据流被追加到同一个文件时才使用>>.
  
  (10)删除匹配的文件
  -delete可以删除find找到的文件
  eg.
  ①删除当前目录下的.swap文件
        find . -type f -name "*.swap"  -delete


运维网声明 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.iyunv.com/thread-554729-1-1.html 上篇帖子: linux shell之read 用法 下篇帖子: shell技巧(不断整理)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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