Linux find命令

find pathname -option -action

  • pathname

    多个目录空格分开

  • option

    -name 文件名查找

    -iname 文件名查找(不区分大小写)

    -user 根据属主来查找文件

    !-user 根据属主来查找文件(不属于)

    -group 根据属组来查找文件

    !-group 根据属组来查找文件(不属于)

    -uid 属主id

    -gid 属组id

    -a 连接两个不同的条件(两个条件必须同时满足)

    -o 连接两个不同的条件(两个条件满足其一即可)

    -not 对条件取反的

    -size n 指定文件大小,若数字前+表示大于,-表示小于;常用单位c(字节),k,M,G

    -perm 根据文件权限查找文件

    -nouser and -nogroup 查找既没有属主又没有属组的文件

    -follow 遇到符号链接文件,就跟踪到链接指向的文件

    -mount 不跨越文件系统的mount点,即在当前的文件系统查询,不进入其他文件系统(如挂载的windows系统)

    -prune 指出要忽略的目录

    -path pathname -prune 避开指定子目录pathname查找

    -atime -n[+n] 找出文件访问时间在n日之内[之外]的文件

    -ctime -n[+n] 找出文件更改时间在n日之内[之外]的文件

    -mtime -n[+n] 找出修改数据时间在n日之内[之外]的文件

    -amin -n[+n] 找出文件访问时间在n分钟之内[之外]的文件

    -cmin -n[+n] 找出文件更改时间在n分钟之内[之外]的文件

    -mmin -n[+n] 找出修改数据时间在n分钟之内[之外]的文件

    -maxdepth 后面的参数表示距当前目录指定的深度

  • action

    -print 默认情况下的动作

    -ls 查找到后用ls 显示出来

    -ok [command] {} \; 查找后执行命令的时候询问用户是否要执行

    -exec [command] {} \; 查找后执行命令的时候不询问用户,直接执行

eg:

  1. 删除查找到的超过30天没有访问过文件

    find /tmp -atime +30 –exec rm –rf {} \;

  2. 查找在五天内没有访问过的文件

    find /tmp –atime +5