find 文件查找工具,通过遍历指定路径下的文件系统完成查找,速度慢,但执行精确查找;
语法:find [OPTIONS] [查找路径] [查找条件] [处理动作]
查找路径:默认为当前目录
查找条件:默示查找所有文件
处理动作:显示至屏幕
1 查找条件:
1.1 根据文件名字查找:
-name “文件名称”: 支持使用globbing元字符 *, ?, [], [^]
-iname "文件名称":查找时忽略文件名称字符大小写
-regex PATTERN: 查找时以PATTERN匹配整个文件路径字串,而不仅仅包含文件本身
1.2. 根据属主、属组来查找:
-user USERNAME: 查找属主为指定用户的文件;
-group GROUPNAME: 查找属组为指定组的文件;
-uid UserID
-gid GroupID
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
1.3. 组合条件:条件之间要有逻辑关系
与: -a, 同时满足
或:-o, 满足一个条件
非: -not, !, 表示不符合条件
例:
-not A -a -not B = -not \( A -o B \)
-not A -o -not B = -not \( A -a B \)
1.4. 根据文件类型查找:
-type TYPE
f: 普通文件, -type f
d: 目录文件
l: 符号链接文件
s: 套接字文件
b: 块设备文件
c: 字符设备文件
p:命令管道文件
1.5 根据文件大小来查找:
-size [+|-]#UNIT
UNIT(常用单位):k, M, G
#UNIT: #-1 < x <= #
-#UNIT: x <= #-1
+#UNIT:x > #
例如:find / -size 10M 显示9M-10M之间大小的文件
find / -size -10M 显示小于等于9M大小的文件
find / -size +10M 显示大于10M大小的文件
1.6 根据时间戳查找:
以“天”为单位:
-atime [+|-]# 即access time, 文件被读取或者执行的时间
-atime # #天到#+1天之间访问的文件
-atime -# #天内访问的文件
-atime +# #天之前访问的文件
实例:
-atime 0 0天到1天之间访问的文件,即24小时内访问的文件
-atime 3 3天到4天之间访问的文件,
-atime -3 3天内访问的文件
-atime +3 3天之前访问的文件
-mtime [+|-]# 即modify time,指文件内容被修改的时间。
-ctime [+|-]# 即change time,文件状态改变时间,如通过chmod修改文件属性
以“分钟”为单位:
-amin [+|-]#
-mmin [+|-]#
-cmin [+|-]#
使用stat可以查看文件的atime、ctime、mtime。
例:
stat ~/.bashrc
也可以使用ls查看文件的atime、ctime、mtime。
ls –l ~/.bashrc指示的是文件的modify time。
ls –lu ~/.bashrc 或者ls –l –time=atime~/.bashrc指示的是文件的access time
ls –lc ~/.bashrc 或者ls –l –time=ctime~/.bashrc 指示的是文件的change time
2. 对查找到的文件进行处理
find 命令 | xargs 命令
例:
find ~/ -size +10M | xargs du -sh 列出文件的大小
find ~/ -size +10M | xargs rm -rf 删除找到的文件
find ~/ -size +10M | xargs -i cp {} /tmp/ 将找到的文件复制到/tmp/目录下,其中-i的作用是将管道中的数据导入{}中