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.查找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 \;

你可能感兴趣的:(运维,bash,linux,正则表达式)