find文件查找命令
0) 简介
与之前一篇grep不同的是find属于文件属性匹配查找,
find命令相比之前的师兄locate来说优势明显,当然
这些都是建立在伟大的摩尔定律之上,对于处理器性能
不在是瓶颈时,如何让搜索变得更加精确,更具有定义
化便是find出先的意义
1) 查找分类
Usage: find [查找路径] [查找条件(支持通配符)] [处理动作]
find . -name Ops
a) 文件及文件权限查找
-name 根据文件名匹配文件
# 搜索 /etc 目录下文件名为 fs 开头的所有文件 find /etc -name f*
需要注意这里会搜索子目录
# 指定最大深度之后,对文件的遍历只会 # 有一层(也就是当前目录) find /etc -maxdepth 1 -name f*
-iname 忽略文件名大小写匹配
# 忽略大小写查找,至于中文嘛,不解释 : ) find /etc -iname s*
-type 与shell中文件测试类型相同
f 查找的文件位普通文件(不包括目录)
find ~ -type f
d 查找的文件类型为目录(不包括普通文件)
find ~ -type d
b 查找的文件类型为块设备文件
find /etc/dev -type b
c 查找的文件类型为字符设备文件
l 查找的文件类型为链接文件
p 查找的文件类型为管道文件
s 查找的文件类型为socket文件
-size 根据文件大小进行查询
# 文件查询结果很像时间查询 # 具体请查阅时间查询
-perm 根据linux文件权限系统查找
# 如上图 +755 的条件可以匹配4种不同权限的文件 #+755 3个权限位任意一位对应ugo都可以 find / -prem +755 # 如上图右 -755 的条件只能匹配 755 权限的文件 #-755 每一位权限必须完全匹配查找的文件 find / -prem -755
b) 用户或用户组
-user 根据文件的属主来查询
find . -user openstack
-group 根据文件的属组查询
find . -group openstack
-uid根据文件的属主id查询
find . -uid openstack
-gid 根据文件的数组id查询
find . -gid openstack
-nouser 文件或目录没有属主
-nogroup 文件或目录没有属组
c) 时间查询
-atime 查找访问时间在某天范围内的文件
find . -atime +4 大于三天之前的文件
(此时要查找的文件访问时间大于72小时)
find . -atime -4 小于三天之内的文件
(此时要查找的文件访问时间小于48小时)
find . -atime 4 正好第三天的文件
(此时要查找的文件访问时间在48<m<72)
-mtime查找修改时间在某天范围内的文件
-ctime查找创建时间在某天范围内的文件
-amin访问分钟
-mmin修改分钟
-cmin创建分钟
d) 组合查询
-a 并且
# 查找/etc/目录下大于1M且类型为普通文件的所有文件; find /etc/ -size +1M -a -type f | xargs ls -lh
-o 或者
# 查找当前系统上没有属主或属组文件; find / \( -nouser -o -nogroup \)
-not 非
# 查找/etc/目录下至少有一类用户没有写权限; find /etc/ -not -perm -222
e) 其他操作
查找到文件之后执行什么操作,都在这最后了 :)
find . -type f [ -print ] 这便是find
的默认动作,实现与打印当然我们可能会执行一
些其他的-ls,-exec,-ok
实例:
同样都是将查找结果管道给下一个操作 xargs的好处就是查找的结果序列不会 一次分配到内存,这样按需获取提高程序 的执行效率 # 配合其他类型的查找 find . -mtime 4 -exec ls -ld {} \; # 将所匹配的文件改名备份 find . -mtime 4 -exec mv {} {}.bak \;
转载于:https://blog.51cto.com/apprentice/1368745