首页 > 代码库 > linux命令:find文件查找工具 locate命令查找

linux命令:find文件查找工具 locate命令查找

     find命令简介:   

      

     实时、精确、支持众多查找标准

       遍历指定目录中的所有文件完成查找,速度慢;

1.命令格式:

locate filename 直接跟需要查找的文件  eg locate passwd  系统文件数据库中所有

                            包含passwd的文件。

find 查找路径 查找标准 查找到以后的处理动作

 查找路径:默认为当前目录

 查找标准:默认为指定路径下的所有文件

 处理动作:默认为显示到屏幕上

eg:find /etc -name passwd  表示在etc目录下查找名字为passwd的文件

2.命令功能:

    locate:(查找命令)

       非实时,模糊匹配,查找是根据全系统文件数据库进行的;

    # updatedb, 手动生成文件数据库

       速度快

    find:

       实时

       精确

       支持众多查找标准

       遍历指定目录中的所有文件完成查找,速度慢;

3.命令参数:

        -name ‘FILENAME‘:对文件名作精确匹配

              文件名通配:

                     *:任意长度的任意字符

                     ?

                     []

        -iname ‘FILENAME‘: 文件名匹配时不区分大小写

        -regex PATTERN:基于正则表达式进行文件名匹配

        -user USERNAME: 根据属主查找

        -group GROUPNAME: 根据属组查找

        -uid UID: 根据UID查找

        -gid GID: 根据GID查找

        -nouser:查找没有属主的文件

        -nogroup: 查找没有属组的文件     

        -type    find /tmp -type d  查找/tmp下的目录文件包括/tmp本身

              f: 普通文件

              d:目录文件

              c:字符设备文件

              b:块设备文件

              l:链接文件

              p:管道设备文件

              s:套接字设备文件

        -size [+|-]    +10k表示大于10k的文件  -10k表示小于10k的文件

            find /tmp -size 10k 表示查找/tmp下的大小为10k的文件      

              默认没指定单位的话,为字节b

            1k 所有小于1k的都会被匹配到,1M 所有小于1M都会被匹配到

              #k  k=kb    #表示数字  k为小写

              #M  M=Mb    #表示数字  M大写

              #G  G=Gb    #表示数字  G大写      

  组合条件: 如果查找时没有指定组合关系,默认为与关系

     find /tmp -nouser -a -type d -ls  

     find /tmp -not -type d 查找非目录的文件

          -a:与 

          -o:或

          -not:非      

eg: 查找/tmp目录下,不是目录,并且还不能为套接字类型的文件;

      find /tmp -not -type d -a -not -type s

eg: 查找/tmp/test目录下,属主不是user1,也不是user2的文件;

        find /tmp -not -user user1 -a -not -user user2

*相当于  find /tmp -not \( -user user1 -o -user user2 \)  

    * 谨记:()左右需要空格符隔开

       按时间天数计算:

          -mtime   修改时间

          -ctime   改变时间

          -atime   访问时间

              [+|-]#  #表示数字  +5表示超过5天  -5表示在五天内

        按分钟数计算:

          -mmin  

          -cmin

          -amin

              [+|-]#  #表示数字 +5表示超过5分钟  -5表示5分钟内

          -perm MODE:精确匹配   -perm 644 表示精确匹配,必须是644权限

              /MODE: 任意一位匹配即满足条件 -perm /644表示只要有一位符合就可以

              -MODE: 文件权限能完全包含此MODE时才符合条件

              -644

              644: rw-r--r--

              755: rwxr-xr-x

              750: rwxr-x---

              find ./ -perm /022  表示组或者其他人有写权限 0表示不做匹配.

           find ./ -perm -001  查找其他用户有执行权限的文件

    动作:

          -print: 显示(-print也是属于默认动作,即不指定动作默认就是显示)

          -ls:类似ls -l的形式显示每一个文件的详细

          -ok COMMAND {} \; 每一次操作都需要用户确认  {}表示引用前面所找到的文件

          -exec COMMAND {} \;每一次操作不需要用户确认  {}表示引用前面所找到的文件

       find ./ -type d -ok chmod +x {} \; 表示找到目录文件并赋予执行权限

   find ./ -perm -020 -ok mv {} {}.new \; 找到当前目录下属组具有写权限的文件,并       修改其文件名为  原文件.new 。

4.命令实例:   

       1、查找/var目录下属主为root并且属组为mail的所有文件;

            find /var -user root -a -group mail     

[root@xuelinux test]#  find /var -user root -a -group mail

/var/spool/mail


       2、查找/usr目录下不属于root,bin,或student的文件;

          find /usr -not -user root -a -not -user bin -a -not -user student

或者 find /usr -not \( -user root -o -user bin -o -user student \) 括号左右必须有空格

[root@xuelinux usr]# find /usr -not \( -user root -o -user bin -o -user student \)

/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache

[root@xuelinux usr]# find /usr -not -user root -a -not -user bin -a -not -user student

/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache


       3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;

            find /etc -mtime -7 -a -not \( -user root -o -user student \)

      或者  find /etc -mtime -7 -a -not -user root -a -not -user student


       4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主

          属组均修改为root;

        find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;

       5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;

           find /etc -size +1M >> /tmp/etc.largefiles

[root@xuelinux ~]# find /etc -size +1M >> /tmp/etc.largefiles

[root@xuelinux ~]# cat /tmp/etc.largefiles 

/etc/selinux/targeted/modules/active/policy.kern

/etc/selinux/targeted/policy/policy.24

       6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;

           find /etc -not -perm /222 -ls

[root@xuelinux ~]# find /etc -not -perm /222 -ls

   493    4 -r--r-----   1 root     root         4002 3月  2  2012 /etc/sudoers

  2279    4 ----------   1 root     root         2541 10月 22 23:10 /etc/shadow

   960    4 -r--r--r--   1 root     root          460 8月 17  2013 /etc/dbus-1/system.d/cups.conf

   523  172 -r--r--r--   1 root     root       172980 10月 10 08:25 /etc/pki/ca-trust/extracted/java/cacerts

   519  308 -r--r--r--   1 root     root       314336 10月 10 08:24 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt

   521  184 -r--r--r--   1 root     root       185220 10月 10 08:25 /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem

   520  228 -r--r--r--   1 root     root       232342 10月 10 08:24 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

   522  184 -r--r--r--   1 root     root       185023 10月 10 08:25 /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem

    51    4 ----------   1 root     root         2415 10月 22 23:10 /etc/shadow-

    43    4 ----------   1 root     root          829 10月 22 23:10 /etc/gshadow-

  1091    4 -r-xr-xr-x   1 root     root         2134 11月 24  2013 /etc/rc.d/init.d/lvm2-lvmetad

  1092    4 -r-xr-xr-x   1 root     root         2665 11月 24  2013 /etc/rc.d/init.d/lvm2-monitor

  1090    4 -r-xr-xr-x   1 root     root         1340 11月 24  2013 /etc/rc.d/init.d/blk-availability

   129    4 ----------   1 root     root          841 10月 22 23:10 /etc/gshadow

  1149    4 -r--r--r--   1 root     root          324 11月 22  2013 /etc/ld.so.conf.d/kernel-2.6.32-431.el6.i686.conf

   962    4 -r--r--r--   1 root     root          146 8月 17  2013 /etc/pam.d/cups


本文出自 “学linux历程” 博客,请务必保留此出处http://woyaoxuelinux.blog.51cto.com/5663865/1865216

linux命令:find文件查找工具 locate命令查找