文件查找:


locate:非实时查找,模糊匹配,查找根据全系统文件数据库进行,速度快

updatedb:手动生成文件数据库


find:实时,准确,支持众多查找标准,遍历指定目录中的所有文件完成查找,书店慢


find 查找路径 查找标准 查找到一行的处理动作

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

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

处理动作:默认为显示


匹配标准:-name 'filename':对文件名做精确匹配

                文件名通配:“”

                      *

                      ?

                      []

           -iname filename:文件名匹配不区分大小写

           -regex pattern:基于正则表达式进行的文件

           -user username:根据属主查找

           -group groupname:根据属组查找

           -uid uid:根据uid查找

           -gid gid:根据gid查找

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

           -type

               f:普通文件 d:目录 c b l p s

           -size [+-]

                #k #M #G


组合条件: 

       -a:与

       -o:或

       -not:非


/tmp/test目录下,属组不是user1,也不是user2的文件

  -mtime 修改

  -ctime

  -atime 访问

     [+-]#


  -mmin

  -cmin

  -amin

     [+-]#

  -perm mode:完全匹配

        /mode:匹配一个就行

        -mode:文件权限包含此mode权限才显示


运作:

   -print:显示

   -ls:类似ls -l

   -ok command {} \;每次都需用户确认

   -exec command {} \;


范例1:任意的.sh文件权限包含111的文件,去除其他用户的执行权限

[root@Jameszhan ~]# find ./ -name "*.sh"  -a -perm -111 -exec chmod o-x {} \;


范例2:查找用户不属于root,bin ,student用户的文件

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


范例3,查找/var目录下,属主为root并且属组为apache的文件

[root@Jameszhan ~]# find /var -user root -group apache


范例4,查找/var目录下,最近7天修改过,不是root,也不是apache的用户

[root@Jameszhan ~]# find /var -mtime -7 -not -user root -a -not -user apache


范例5,查找当前系统上没有属组,也没有属主且最近1天内曾被访问过的文件,并将属主属组改为root

find / \(-nouser -o -nogroup\) -a -atime -1 -exec chmod root:root


范例6,查找/etc目录下大于1M的文件,并将文件名写入/tmp/etc.txt文件中

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


范例7,查找/etc目录下所有用户都没有写权限的文件,并显示其详细信息

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


xargs