find:是查找命令

locate:也用于查找,在locate库中查找、文件索引

           具有快速、非实时(查找结果未必精确)、非精确匹配
     

相对于locate,find有如下特征:
           查找时,查找结果略慢、实时、精确查找
           功能强大、可实现查找到文件后进行额外处理
           查找条件非常细致

find 选项 查找路径 查找条件 [动作]

find /path/to/somdwhere createia [action]

查找路径:默认为当前目录
查找条件:默认为指定目录所有文件
动作:默认为显示

eg:
find /etc -name 'passwd'

遍历

条件查找:
按文件名称查找:
-name  ' filename':

       glob:通配符
            *  表示任意长度的任意字符
            ?任意单个字符
            []  匹配指定范围内的任意单个字符
-iname 'filename'
-empty:查找所有的空文件或空目录

-user USERNAME: 用户名
-group GRPNAME:组名

-uid UID:用户ID
-gid GID:组ID

find /tmp -user

-nouser:查找无属主的文件
-nogroup:无属组


组合查找条件:
-a::与
-o:或
-not或!:非


如:find /tmp ! -uesr hadoop -a ! -empty


文件类型:
-type:

      f  :普通文件类型
      d :目录
      l : 链接文件
      p  :管道
      b :块设备

      c :字符设备


文件大小:

-size [+|-] 数值 unit(单位)
unit:K,G,M

所有不足一个单位的,视为一个单位
如查找2k的文件,会显示1.2k等,在大于1k小于2k之间,(1k 2k)

 

根据时间来查找:

时间为分钟:

    amin [+-] # :( #是数字)查找最近多少分钟访问过的文件
    mmin [+|-] # :查找最近多少分钟修改过的文件
    cmin [+|-] # :查找最近多少分钟改变过的文件

时间为天:
    atime:访问时间
    mtime:修改时间
    ctime:改变时间

find /etc -mtime -1 最近一天内/etc下改过的文件


如何根据权限来查找:

-perm mode: 精确匹配指定权限
-perm -mode:所有的权限都必须匹配,所查找的对应位必须包含 all,表示与关系
-perm /mode:有一个符号条件就行,任何一个都可以,any 表示或关系
                   只要有一位权限符号条件即可。每一位,而不是每一类

ls -ldh `find /etc -perm 755` 匹配权限为755包含高于755的,如777


find ./ -perm -222  查找有写权限的所有文件

find ./ -perm -002  其他用户有写权限的文件

find ./ -perm /222  查找任意有写权限的文件


动作:

-print:显示
-ls:详细显示
-exec:直接执行所有命令,不提示
     -exec COMMAND { } \;
-ok:执行命令时有提示

-exec mv {} {}.old\;  找到符合的,在该位后加.old