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)
fsyfsy
上一篇 2017-04-10
下一篇 2017-04-10

相关推荐

  • CentOS 7 忘记root密码的解决之道

    1、启动时任意键暂停启动,会出现如下界面: 2、按e键进入编辑模式,将光标移动linux16开始的行,添加内核参数 rd.break 3、按 ctrl+x 组合键启动 4、查看各分区和文件系统的挂载情况,需要将 / 的模式改为 rw 5、当前系统上的 / 是在光盘上的,切换至挂载目录下的 / ,才可以修改密码 6、在 / 目录下创建autorela…

    Linux干货 2016-09-26
  • web服务介绍(三)

    状态码分类:1xx:100-101  额外信息提示2xx:200-206  表示成功类响应3xx:300-305  重定向4xx:400-415  错误类响应码,由于客户端发送错误,如客户端请求一个根本不存在的资源5xx:500-505  错误类信息,服务器端错误,服务器本身一些问题导致请求无法成功 常用状态…

    Linux干货 2017-04-22
  • Linux高级文件系统管理之磁盘配额、RAID和LVM的使用

    磁盘配额Quota 磁盘配额(Quota)的作用:   在Linux系统中,由于是多用户、多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中有少数几个用户大量占掉了硬盘空间的话,那肯定影响其他用户的使用权限。因此管理员应该适当限制硬盘的空间给用户,以妥善分配系统资源。 磁盘配额的一般用途    比较常使用的几种…

    Linux干货 2016-09-02
  • 磁盘管理的补充及扩展

    磁盘管理的补充及扩展 挂载点和/etc/fstab(配置文件) 使用mount命令挂载为临时挂载开机重启后就会自动卸载,为了永久挂载必须写在配置文件中! 配置文件系统体系  被mount、fsck和其它程序使用  系统重启时保留文件系统体系  可以在设备栏使用文件系统卷标  使用mount  -a 命令挂载/etc/fstab中的所有文件系…

    Linux干货 2016-08-30
  • 配额、RAID、软RAID以及LVM管理

    磁盘配额允许控制用户或者组织对磁盘的使用,它能防止个人或者组织使用文件系统中超过自己使用的部分,或者造成系统完全拥堵。配额必须由root用户或者具有root权限的用户启用和管理。 硬RAID以及软RAID :RAID是Redundant Array of Independent Disks的简写,即独立硬盘冗余阵列,简称磁盘阵列。通过实现的方式不同…

    Linux干货 2016-11-23
  • linux软链接与硬链接的区别

    硬链接:相于当给文件增加了一个新名 在添加链接时会增加链接数,其inode结点数不会增加 支持绝对路径与相对路径 硬链接不能对目录来创建 不能跨分区来创建链接 硬链接链接到文件被删除时,依旧可以通过链接文件来访问被删文件的数据 软链接:可以支持对目录来创建链接 (注,当你用rm -rf 删除目录的时候,目录不会删除,但目录中的内容会被删除,并且会删除源文件)…

    Linux干货 2016-10-02

评论列表(1条)

  • renjin
    renjin 2017-04-12 13:01

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