find命令详解

Find:

作用:常在系统中作为查找文件所用到的角色

语法:find 查找位置 查找类型 [查找后所执行的操作]

查找位置:绝对路径或相对路径

查找类型:

-name:根据文件名查找

-iname:不区分大小写的方式查找,只支持*?[]^等风格

-perm:精确权限查找,后边接权限的掩码值,掩码值用法如下:

              755:查找777权限的文件

              /222:查找至少一类用户有写权限的文件

              /002:查找其他用户有写权限的文件

              -222:查找三类用户都有写权限的文件

 -user:以用户名查找

 -group:以组名查找

-nogroup:查找无属组的文件

-nouser:查找无属主的文件

-regex:匹配正则表达式进行查找,-iregex:匹配正则并忽略大小写

-type:以文件类型查找

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

-size:以文件大小查找,包含K、M、G单位,正数代表大于,负数代表小于,整数代表等于

       -atime:以访问天数查找,正负整数同上

       -mtime:以数据修改天数查找,正负整数同上

       -amin:以访问分钟数查找,正负整数同上

       -mmin:以数据修改分钟数查找,正负整数同上

       -empty:查找空文件

       -follow:如find命令遇到符号链接文件,就跟踪至链接所指向的文件中

       -maxdepth:从指定目录开始向下的几层目录开始查找

       -newer:查找在此文件修改之前所修改的所有文件

  处理动作:

    -print:输出到屏幕,不需要添加,默认输出到屏幕

       -ls:以ls长文件的格式输出

       -delete:将查找到的文件删除

       -fls 文件路径:将查找到的文件以ls详细信息的格式输出到某个文件

  -exec 命令 {} \;   :将查找到的文件传递给shell命令进行处理,与此命令 (|xargs shell命令) 达到的目的相同

  多个查找类型连接:

    -a :在两个查找类型中间,表示和

    -o :在两个查找类型中间,表示或

    ! :在查找类型前边,表示非,与查找条件相反

实例:

1.以结尾的文件名进行查找;

  find /etc/ -name "*.conf"

2.以结尾的文件名(忽略大小写)进行查找;

  find /etc/ -iname "*.conf"

3.以两个名称为条件进行查找,符合其中一个名称即可;

  find /etc/ -name "*.conf" -o -name "*.txt"

4.配置正则表达式进行查找;

  find . -regex ".*\(\.txt\|\.pdf\)$"

5.否定条件查找;

  find /etc/ ! -name "*.conf"

6.根据文件类型查找,查找目录中的所有文件;

  find /boot/ -type f

7.查找距当前目录的往深的两级目录中的文件;

  find /etc/ -maxdepth 2 -type f

8.查找七天内被访问过的文件;

  find /etc/ -type f -atime -7

9.查找七天前当天被访问过的文件;

  find /etc/ -type f -atime 7

10.查找七天前所有时间内被访问过的文件;

  find /etc/ -type f -atime +7

11.查找在修改此文件之前修改的所有文件;

  find /etc/ -type f -newer /etc/fstab

12.根据文件大小进行查找,+5k代表大于5k、-5k代表小于5k、5k代表等于5k;

  find /etc/ -type f -size +5k

13.查找空文件并且将其删除,三种方式;

  find /etc/ -empty -delete

  find /etc/ -empty -exec rm -rf {} \;

  find /etc/ -empty | xargs rm -rf

14.根据文件权限查找文件;

  find /etc/ -type f -perm 777

15.查找出目录中的后缀为php,并且权限不是755的文件;

  find /etc/ -type f -a -name "*.php" -a ! -perm 755

16.查找出目录中的日志文件,并且其存在时间超过30天,将其复制到/tmp目录下;

  find /var/log/ -name "*.log" -a -mtime +30 -exec cp -rf {} /tmp/ \;

发表评论

后才能评论