find是Linux上的一个实时查找工具,能通过遍历指定路径下文件系统层级结构完成文件的查找。但是,查找速度较慢。
用法
find [options] [查找起始路径] [查找条件] [处理动作]
options在实际操作过程中,不经常使用,此处不做介绍
查找的起始路径可以是根文件目录,但是一般为了检索速度,可以指定路径来查找
查找条件包括选项和测试条件,着重介绍测试条件
<1>根据文件名测试
-name "PATTERN":精确查文件名中包含PATTERN的文件
-iname "PATTERN":查找文件名中不包含PATTERN的文件
注:此处的PATTERN支持文件名通配
<2>根据文件的从属关系查找
-user USERNAEM:查找属主为指定用户的所有文件
-group USERNAME:查找属组为指定组的所有文件
-uid UID:查找指定属主UID的所有文件
-gid GID:查找指定数组GID的所有文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
注:找出没有属主和属组的文件,可以防止新的用户继承此文件的某些权限
<3>根据文件类型查找
-type TYPE
f:普通文件
d:目录文件
l:符号链接文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件
<4>组合测试
与:-a 默认
或:-o
非:-not、!
<5>根据文件大小查找
-size [+|-]#
常用单位
k:默认
M
G
用法
-size 5:查找目录下等于5k的文件
-size +5:查找目录下大于5k的文件
-size -5:查找目录下小鱼5k的文件
<6>根据时间戳查找
1、以天为单位
-atime:根据文件的修改时间查找文件
-mtime:根据文件的修改时间查找文件
-ctime:根据文件的改变时间查找文件
用法:-a time [+|-]#
-atime 3:查找三天前修改的的文件
-atime +3:查找超过3天未访问的文件
-atime -3:查找3天之内访问过的文件
-mtime,-ctime同理
2、以分钟为单位
-amin
-mmin
-cmin
<7>根据权限查找
-perm [MODE]
MODE有俩种形式
/MODE:任何一类用户的任何一位符合条件,即满足要求
-MODE:任何一类用户的的全三位符合条件,即满足要求
例如:find / -perm /022:查找根目录下至少有一类用户有写权限的文件
用途:及时找出有除属主之外有写权限的文件,修改权限,防止系统危险
find / -prem -022:查找根目录下属组和其他用户都有写权限的文件
处理动作
-print:输出至标准输出,默认动作
-ls:类似对查找到的文件执行 “ls -l”命令,输出文件的详细信息
-delete:删除查找到的文件
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式(详细)信息保存至指定文件中
-ok COMMAND {} \;:对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认
-exec COMMAND {} \;:对查找到的每个文件执行由COMMAND表示的命令,每次操作不需要用户的确认
例如:find / -perm -002 -exec mv {} {}.ganger \; :找出根目录下其他用户有写权限的文件,并将其加后缀.danger