find

Table of Contents

find [查找目录] [查找规则/目标] [查找完之后执行的 action]

1 查找规则

1、根据文件名

  • -name 根据文件名精确查找
  • -iname 忽略大小写查找,也算是精确查找
  • 通配符:
    • * 匹配任意字符
    • ? 匹配任意的单个字符
    • [] 匹配括号里面的任意一个字符

2、根据文件所属用户和组

  • -user 根据所属用户来查找
  • -group 根据所属组来查找

同时也可以用 uidgid 来查找

3、条件匹配

  • -a 必须同时满足两个条件
  • -o 满足其中的一个条件
  • -not 取反

4、文件属性

  • -atime -mtime =-ctime=:最新一次访问时间、最近一次内容修改、最近一次属性修改,单位是天
  • -amin -mmin =-cmin=:同上,单位是分钟

比如:

  • find /data/log/ -atime +30 30 天内没有访问过的日志文件
  • find /data/log -atime -30 30 天内访问过的日志文件

5、根据文件类型来查找文件

-type

  • f 普通文件
  • d 目录
  • l 链接
  • b 块设备
  • c 字符设备
  • p 管道
  • s socket

比如:=find /tmp -type s=

6、根据文件大小来查找

-size

比如:

  • find /tmp -size 2M 查找等于 2M 的文件
  • find /tmp -size +2M 查找大于 2M 的文件
  • find /tmp -size -2M 查找小于 2M 的文件

7、根据文件权限查找

-perm

2 执行 action

  • -print 默认执行的动作
  • -ls 查找后用 ls 显示出来
  • -ok [command] 查找后执行命令的时候询问用户是否要执行
  • -exec [command] 查找后执行命令(不询问,直接执行)

一个很常用的命令,查找 30 天未使用的日志文件,删除: find /data/log -atime +30 -exec rm -rf {} \;