find是一种查找文件的命令。它遍历系统中的每个文件实现精确、实时查找,并可以根据用户指定路径查找。它支持Glob的通配符。find的常用格式为: find [查找路径 ...] [查找条件] [处理动作] 1、find命令常用查找条件: -name "FILENAME" 按指定名称查找 -iname "FILENAME" 不区分文件的大小写 -user USERNAME 根据用户属主查找 -group GROUPNAME 根据用户属组查找 -uid UID 根据UID查找文件 -gid GID 根据GID查找文件 -nouser 查找没有属主的文件 -nogroup 查找没有属组的文件 -type 根据文件类型查找 f :普通文件 d:目录文件 l:软连接 b:块设备 c:字符设备 p:管道 s:socket文件 -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)查找/var目录下属主为root并且属组为mail的所有文件; find /var -user root -a -group mail (2)查找/etc目录下包含passwd字符的所有文件 find /etc -name "*passwd*" (3)查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件; find /etc -mtime -7 -a -not \( -user root -o -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 -exec {} > /tmp/etc.largefiles (6)查找/etc目录下所有用户都没有写权限的文件,并显示其详细信息; find /etc -perm -555 ls