语法:
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.查找7天内被访问的文件
find /etc/type f -atime -7
9.查找7天前当天被访问过得文件
find /etc/ type -f -atime 7
10.查找7天前所有时间内被访问过的文件
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 \;