find是一种查找文件的命令。它遍历系统中的每个文件实现精确、实时查找,并可以根据用户指定路径查找。它支持Glob的通配符。find的常用格式为:

       find [查找路径 ...] [查找条件] [处理动作]

 1find命令常用查找条件:

      -name "FILENAME"    按指定名称查找

      -iname "FILENAME"   不区分文件的大小写   

      -user USERNAME       根据用户属主查找

      -group GROUPNAME  根据用户属组查找

      -uid UID    根据UID查找文件

      -gid GID   根据GID查找文件

      -nouser     查找没有属主的文件

      -nogroup   查找没有属组的文件

    -type   根据文件类型查找

         f :普通文件

         d:目录文件

         l:软连接

         b:块设备

         c:字符设备

         p:管道

         ssocket文件

     -size [+/-]#根据文件大小查找。默认按字节查找单位: {k|M|G}

    +: 表示大于指定大小的文件

    -: 表示小于指定大小文件   

   -atime  [+/-]#     根据访问时间(单位为天)

       -mtime [+/-]#     根据修改时间(单位为天)

       -ctime  [+/-]#     根据改变时间(单位为天)

       -amin   [+/-]#     根据访问时间(单位为分钟)

       -mmin  [+/-]#     根据修改时间(单位为分钟)

       -cmin   [+/-]#     根据改变时间(单位为分钟)

+: 表示至少指定时间没有被访问或被修改过

    - : 表示最近指定时间内被被访问或被修改过

       -perm   根据权限查找

        mode:精确匹配

        /mode:任何一位匹配都行

        -mode:所有都得匹配

    2、多条件查找,条件间逻辑关系:

        并:-a

        或:-o

        非:!, -not    

        若省略连接符则默认为是“并”关系

   3、处理动作:

        -print 默认动作。将查找结果输出

        -ls :将查找结果详细输出

        -ok COMMAND { } \;   执行命令并提醒用户确认

        -exec COMMAND { } \;  执行命令不提醒

    其中{}是一个占位符,表示对查找的结果执行命令 \; 固定格式

4、实例应用

1、使用groupnogroup选项

  就像usernouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用:

  $ find /apps -group gem -print

  要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件

  $ find / -nogroup-print

2、按照更改时间或访问时间等查找文件

  如果希望按照更改时间来查找文件,可以使用mtime,atimectime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。

  用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。

  希望在系统根目录下查找更改时间在5日以内的文件,可以用:

  $ find / -mtime -5 -print

  为了在/var/adm目录下查找更改时间在3日以前的文件,可以用:

  $ find /var/adm -mtime +3 -print (5)  查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;

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