find 是linux中的一中文件查找工具,用于查找与指定模式匹配或与指定属性相符合的文件。
之前提到的命令grep是在文本中根据指定模式进行逐行搜索显示被模式匹配到的行,而find搜索出的是文件,规模不同。
与locate相比,find是实时查找匹配精确但时间较慢,而locate依赖于数据库不时实时查找,速度快,但结果不够精确。
回归正题
find命令格式
find [option]...
option:查找路径 查找条件 处理动作
一、按路径查找
如果find后面不加路径 则默认为当前目录
指定路径后执行命令则显示该目录下的所有文件包括其子目录下的文件
二、按条件查找
类型 名称 属主属组 权限 大小 时间
1 按类型
格式 #find 路径 -type 类型 在指定路径下查找指定类型的文件
-f普通文件
-d 目录
-b块设备文件
-c字符设备文件
-l符号链接文件
-p命名管道
-s套接字文件
以-f举例
2 按名称查找(支持文件名通配)
#find [路径] -name fileName 区分大小写
#fine [路径] -iname fileName 不区分大小写
3 按属主属组查找
#find 路径 -user userName
#find 路径 -group groupName
也可以按 UID 和GID来查找
查找没有属主属组的文件
#find 路径 -nouser
#find 路径 -nogroup
4 按权限查找
-perm [+|-] mode
-perm :精确匹配
-perm + :任何一类用户的任何一位权限匹配
-perm -: 每类用户指定的权限都匹配
如: +066 属组有写和执行权限或其他用户有写和执行权限 有一满足就可
-066 属组有写和执行权限并且其他用户有写和执行权限
(此处被绕晕了 课堂上找不到北 后来琢磨时间以长 把自己带沟儿了)
5 按大小查找
-size [+/-] #Unite 常用单位 K、M、G。
以M为例 +#M查找大于#M的文件
M查找大小在(#-1)M到#m间的文件 包括#M
-#M查找小于(#-1)M的文件
6 按时间查找
a 以天为单位
-atime [+/-]# 查找在某时间段被访问过的文件
+#表示查找在#+1天之外访问过
-#表示查找在#天内访问过的文件
#表示查找在#到#+1天期间被访文过的文件
-mtime [+/-]#查找在某期间被修改过的文件
-ctime [+/-]#查找在某期间被改变的文件
b 以分钟为单位 用法与以天为单位的相同
-amin [+/-]# 查找在某时间段被访问过的文件
-mmin [+/-]#查找在某时间段被修改过的文件
-cmin [+/-]#查找在某时间段被改变过的文件
三、处理动作
find命令不光可以按需求查找到文件 还可以根据将文件穿于后面命令进行下一步操作
a 默认为-print 即打印在标准输出上
b -l 长格式输出文件信息
c -exec COMMAND {} \; 对查到的文件进行执行COMMAND命令
d -ok COMMAND {} \; 交互式的
把查到的文件一次性地传给所指定的命令
find | xargs COMMAMD
进行处理时常想到用管道进行后面的操作 但管道传输的是字符串,而find查到的是文件 操作时要注意。
原文:http://baglinux.blog.51cto.com/8584908/1364635