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

相关推荐

  • 10yum源的配置

    yum仓库使用起来特别方便,然而使用之前当然是要配置的啦。下面就介绍一下怎么从0 配置一个yum仓库。 首先要创建yum仓库,当然不能使只给一台服务器用,那要给多个服务器用的话,就需要网络服务。yum仓库支持的网络服务有两种,FTP和HTTP。用yum主要用到的是数据传输,因此FTP更适合创建yum仓库,下面就以FTP为例,说明一下yum仓库的配置。 第一步…

    Linux干货 2016-11-04
  • 脚本及变量解析

    bash脚本编程 脚本文件格式: 第一行顶格:#!bin/bash  (shebang) 注释信息:以#开头 代码注释:好的程序员必备 适量的添加缩进或添加空白行以示分割 语言:编程语言格式:库,算法和数据结构 编程思想:      能够把学到的编程语言的语法格式随时转换为解决问题的思路     &…

    Linux干货 2016-08-12
  • Linux磁盘和文件系统管理

    磁盘相关概念 设备类型: 块设备(block):存取单位为块,典型设备磁盘 字符设备(char):存取单位为字符,典型设备为键盘 设备文件: 关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信。 如果存在两个相同型号设备,使用两个设备文件,但可能还会关联到同一个驱动程序 设备文件只有元数据即属性,没有数据内容,属于特殊文件类型 设备号码: 主设备号:…

    Linux干货 2016-06-09
  • LVS

        Linux虚拟服务器(LVS)是基于Linux内核的操作系统的负载平衡软件。     LVS提供了良好的可扩展性,可靠性和可服务性。 LVS项目的主要工作是开发先进的IP 负载平衡软件(IPVS),应用级负载平衡软件(KTCPVS)和集群管理组件。 IPVS:在…

    Linux干货 2017-08-21
  • week2

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常用工具cp mv rm cat tac head tail more less stat cp   cp SRC…DEST A. 如果SRC是文件: a. 如果目标不存在:新建DEST,并将SRC中的内容填充至DEST中。 b. 如果目标存在: (1). 如…

    Linux干货 2016-11-06
  • Linux的哲学思想

    2018-03-03

    Linux干货 2018-03-03

评论列表(1条)

  • renjin
    renjin 2017-04-12 13:01

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