0) 简介
与之前一篇grep不同的是find属于文件属性匹配查找,
find命令相比之前的师兄locate来说优势明显,当然
这些都是建立在伟大的摩尔定律之上,对于处理器性能
不在是瓶颈时,如何让搜索变得更加精确,更具有定义
化便是find出先的意义
1) 查找分类
Usage: find [查找路径] [查找条件(支持通配符)] [处理动作]
find . -name Ops
a) 文件及文件权限查找
-name 根据文件名匹配文件
需要注意这里会搜索子目录
![屏幕快照 2014-03-05 下午4.36.44.png wKioL1MW4zTxmrCAAASuS0wV-bU593.jpg]()
|
1
2
3
|
find
/etc
-maxdepth 1 -name f*
|
![屏幕快照 2014-03-05 下午4.37.09.png wKiom1MW4-eBCAn1AAEnpCBHml4694.jpg]()
-iname 忽略文件名大小写匹配
-type 与shell中文件测试类型相同
f 查找的文件位普通文件(不包括目录)
d 查找的文件类型为目录(不包括普通文件)
b 查找的文件类型为块设备文件
c 查找的文件类型为字符设备文件
l 查找的文件类型为链接文件
p 查找的文件类型为管道文件
s 查找的文件类型为socket文件
-size 根据文件大小进行查询
![屏幕快照 2014-03-05 下午3.56.03.png wKioL1MW3AeBuqjrAAN6MOAr82o142.jpg]()
-perm 根据linux文件权限系统查找
|
1
2
3
4
5
6
|
find
/ -prem +755
find
/ -prem -755
|
b) 用户或用户组
-user 根据文件的属主来查询
-group 根据文件的属组查询
-uid根据文件的属主id查询
-gid 根据文件的数组id查询
-nouser 文件或目录没有属主
-nogroup 文件或目录没有属组
c) 时间查询
![屏幕快照 2014-03-05 下午3.59.21.png wKioL1MW2gGDW6c9AAByq9Asoeo563.jpg]()
-atime 查找访问时间在某天范围内的文件
|
1
|
find
. -atime +4 大于三天之前的文件
|
(此时要查找的文件访问时间大于72小时)
|
1
|
find
. -atime -4 小于三天之内的文件
|
(此时要查找的文件访问时间小于48小时)
(此时要查找的文件访问时间在48<m<72)
-mtime查找修改时间在某天范围内的文件
-ctime查找创建时间在某天范围内的文件
-amin访问分钟
-mmin修改分钟
-cmin创建分钟
d) 组合查询
-a 并且
|
1
2
|
find
/etc/
-size +1M -a -
type
f |
xargs
ls
-lh
|
![屏幕快照 2014-03-05 下午4.59.51.png wKiom1MW5_vjr24NAAHyUOI8WSI685.jpg]()
-o 或者
|
1
2
|
# 查找当前系统上没有属主或属组文件;
find / \( -nouser -o -nogroup \)
|
-not 非
|
1
2
|
find
/etc/
-not -perm -222
|
![屏幕快照 2014-03-05 下午5.04.53.png wKioL1MW6gOR_-t2AANbrzmGU7k746.jpg]()
e) 其他操作
查找到文件之后执行什么操作,都在这最后了 :)
find . -type f [ -print ] 这便是find
的默认动作,实现与打印当然我们可能会执行一
些其他的-ls,-exec,-ok
![屏幕快照 2014-03-05 下午3.59.47.png wKioL1MW2liwzD42AADjwFaJ4Hw124.jpg]()
![屏幕快照 2014-03-05 下午3.45.35.png wKioL1MW2nWxB1lZAAWW4_I6MHc397.jpg]()
实例:
|
1
2
3
4
5
6
7
8
|
同样都是将查找结果管道给下一个操作
xargs
的好处就是查找的结果序列不会
一次分配到内存,这样按需获取提高程序
的执行效率
find
. -mtime 4 -
exec
ls
-ld {} \;
find
. -mtime 4 -
exec
mv
{} {}.bak \;
|
本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1368745
,如需转载请自行联系原作者