find命令

      find:实时查找工具,根据我们指定的内容或者条件在系统上进行实时查找,比locate在实际场景中用的多得多的多

     具体用法:find   查找路径      查找条件             找到之后执行的动作

例如: find . -name “baoding.log”    -print    (按名字查找到baoding.log文件后输出到屏幕上,也可以通配符查找) 

  

                 查找条件
         -name 可以使用通配符 比如 * ? [] [^]
        find . -name “????.log”
       -iname 文件名称忽略大小写
        find . -iname “baoding.log”
   
       -inum n 根据inode来查找 (基本不用)
       find . -inum 1179826
     -samefile name  查找相同inode号的文件,其实等于查找硬链接(基本不用)

     -links n 根据链接数
        find . -links 2
     -regex 使用正则表达式的方法匹配文件名
        find /etc/ -regex “.*\.sh$”

        根据属主和属组来查找
     -user  -group -uid -gid 
     -nouser 查找没有属主的文件或者目录
     -nogroup 查找没有属组的文件或者目录
     测试方法:新建一个ash用户,然后把一个文件的属主和属组改成ash
              然后再删除ash用户
   
    根据文件类型:
        -type f 普通文件
              d 目录
              l 链接文件
              s 套接字文件
              b 块设备
              c 字符设备
              p 管道

    根据文件大小来查找
         -size + 大于多少的文件
             k M G
         -size – 小于多少的文件
             k M G
         -size   等于多少的文件
             k M G

    根据时间来查找
        -mtime +7 7天以前的  从第8天开始
        -mtime 7  当前时间往前推第7天
        -mtime -7  当前时间往前推第7天以内

     根据权限来查找(基本不用的)
        -perm 755 精确匹配有755权限的文件
        -perm -222 必须包含全部的222权限才可以
        -perm +222(CentOS 6)
              /222(CentOS 7)
              只要有一个比如说属主 属组或者其他人有一个拥有写权限即可

        组合条件:
与:-a
或:-o
非:-not, !

    不是p 或者 不是Q == 不是(P和Q)
    不是P 并且 不是Q == 不是 (P或者Q)

    同时两个条件 find . -user nanjing -type f

     find -not -user joe -o -not -user jane
     find . -user nanjing -o -group  1012
     find . -user nanjing -type f

  使用最频繁的是 
           -name 通配符
           -type f普通文件
                 d目录

    

 处理动作  -print  打印到屏幕上
           -ls    打印到屏幕上 类似于ls -l
           -delete 删除操作 只删除文件,不能删除非空目录
           -fls file 查找到的文件信息保存到指定的文本中
           -ok 在执行后面的动作之前会提示你是否需要执行(交互式的)
           -exec CMD  {} \;  执行后面的命令  {} 表示前面find出的结果  \; 固定用法

find 出来之后 -exec ls (一百万个文件) 删不了的
 
 xargs 将前面的find的查找结果分批次给后面的命令作为执行的参数,比如
   find / -name “*” | xargs ls 

 避免前面的find查找文件过多造成后面的命令不能执行这种情况

参数过多 
示例:执行删除操作
         find /tmp/hebei/  -name “*.log”  | xargs rm -rf
       删除前先执行查看操作:
          find /tmp/hebei/  -name “*.log”  | xargs ls -l
      

    
    find /tmp/ \( -not -user root -a -not -name “f*” \) 
       多个条件要使用\(\)  不能使用“” 

    find /etc/ -path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print
                                &&   真   ||

    查找/etc/下面所有的目录
    当查找到/etc/sane.d的时候  前面的条件为真(’/etc/sane.d’ -a -prune)  
                               或后面的条件就不会执行(-name “*.conf”)
    当查找到其他目录的时候   前面的条件为假 (’/etc/sane.d’ -a -prune)
                             或后面的会执行 (-name “*.conf”)
 
   a && b || c
    a 和b 都为真的时候 则 a && b 为真,然后后面c就不会执行    
    a 或者b 有一个为假,则 a && b 为假,然后后面的c就会执行

    查找目录是 /etc/
          要求排除 /etc/sane.d
          查找*.conf 文件

      
       find  -name  “*.conf”  -exec  cp {}  {}.orig  \;
       备份配置文件,添加.orig这个扩展名
      find /tmp -ctime +3 -user joe -ok rm {} \;
      提示删除存在时间超过3天以上的joe的临时文件
      find ~ -perm -002  -exec chmod o-w {} \;
     在你的主目录中寻找可被其它用户写入的文件
     ind /data –type  f -perm 644  -name “*.sh” –exec chmod 755 {} \;
     find  /home –type d -ls

    生产使用方式:
   1  删除  find /logs/  -name “*.log” -mtime +7 | xargs rm   监控告警 (磁盘告警)
          find /logs/  -name “*.log” -size +20G | xargs rm  应用日志
   2 备份  find /apps/data/ -name “*” -exec cp {}  /backup/  \;
   3 查找 find /apps/ -name “*.log” | xargs grep -i “error”  日志里面找错误
  

原创文章,作者:fsy,如若转载,请注明出处:http://www.178linux.com/73111

(0)
上一篇 2017-04-10 19:51
下一篇 2017-04-10 20:57

相关推荐

  • 16 文本处理工具

    文本处理工具一 一、杂项知识整理 1、ps axo user,ruser,cmd 查看命令发起者的身份和真正的登录身份: [root@localhost test]# ps axo user,ruser,cmd USER     RUSER  &nb…

    Linux干货 2016-08-05
  • Nginx作为web服务器的使用配置

    概述     Nginx是一款免费开源的web服务器,同时也可以作为http、imap/pop3协议进行反代服务器,本篇介绍一些nginx作为web服务器方面的相关配置,具体包含:     1、nginx基础概念介绍     2、nginx…

    Linux干货 2016-10-27
  • 马哥教育21期网络班—第15周课程+练习—-awk 总结

    GNU awk: 文本处理三工具:grep, sed, awkgrep, egrep, fgrep:文本过滤工具;pattern sed: 行编辑器 模式空间、保持空间 awk:报告生成器,格式化文本输出; AWK: Aho, Weinberger, Kernighan&nbsp…

    Linux干货 2016-11-14
  • N22-第十周作业

    第十周    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)    POST–>BootSequence(BOIS)–>BootLoader(MBR)–>Kernel(ramfs或者ramdisk)–&gt…

    Linux干货 2016-11-07
  • Linux基础入门

    Linux基础入门 1、Linux发行版及哲学思想 1.1 Linux发行版          Linux发行版(Linux Distribution,也被叫做GUN/Linux发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。Linux发行版通常包含了包括桌面环…

    Linux干货 2016-02-28
  • N22-第六周作业

    请详细总结vim编辑器的使用并完成以下练习题      vim是模式化的文本编辑器。在不同模式下,每一次按键的效果都不一样。vim有三种工作模式,分别是编辑模式,插入模式和末行模式。编辑模式是打开vim后的默认模式,用于查看文本或进行复制,粘贴,删除等编辑命令。插入模式是为了向文本中输入信息。末行模式是vim自带的命令行接口,能…

    Linux干货 2016-09-26

评论列表(1条)

  • renjin
    renjin 2017-04-12 13:01

    总结了find命令的详细用法,内容写的很不错,需要注意一下排版