今天带大家来了解一下find的强大功能。在Linux中查找文件的命令通常为“find”命令,“find”命令能帮助我们在使用,管理Linux的日常事务中方便的查找出我们需要的文件。
find命令是实时查找做精确匹配,只匹配文件本身,但是速度慢
find [options] [查找路径] [查找条件] [处理动作]
查找路径:默认的为当前目录
查找条件:默认的为查找指定路径下的所有文件
处理动作:默认为显示
1、按用户查找文件
-name: 指定文件名查找,支持文件名通配符
-iname: 指定文件名查找,不区分大小写
-user: 根据文件属主查找
-group: 根据文件属组查找
#在用户被删除,但用户文件存在时使用 -user不能查找出文件,此时可以用UID
-uid: 根据UID查找
-gid: 根据GID查找
-nouser: 查找没有属主的文件
-nogroup: 查找没有属组的文件
说明:通常使用格式
find /tmp/ -name *.txt #文件名后缀是.txt的所有文件
find /tmp/ -user root #用户root的所有文件
find /tmp/ -nouser root #用户不是root的所有文件
find /tmp/ -nouser root -gid
500
#用户不是root且组ID为
500
的文件
2、组合条件查找
-a: 与,两边条件必须同时满足,可以省略-a
-o: 或,两边条件有一个满足即可
-not: 非,条件取反
说明:find命令的组合条件查找看起来简单,其实挺复杂的,这里面隐含了德摩根定律的运用。
德摩根定律:
非(P 且 Q)=(非 P)或(非 Q)
非(P 或 Q)=(非 P)且(非 Q)
3、根据文件类型查找
f:普通文件
d:目录
b:块设备
c:字符设备
l:符号链接文件
p:命名管道
s:套接字
4、根据文件的大小查找
-size [+|-]#Unit 不带+.-就是等于 是做精确查找的
例如:-size +2MB
常用单位:K, M, G
-size参数带加减号分别表示三种情况
-size 2MB:不是表示精确查找文件大小为2MB的文件,而是表示区间是1MB-2MB大小的文件,(#-1)< x <#
-size +2MB:表示查找大于2MB的文件,x > #
-size –2MB:不是表示精确查找文件小于2MB的文件,而是表示区间是0MB-(2-1)MB大小的文件,0 < x < (#-1)
5、根据时间戳查找
以天为单位的:
-atime[+|-]# : 访问时间
例如 +:表示(#+1)天之外被访问过的
-:表示#天之内被访问过的
无字符:表示短于(#+1) > x >=#天的时间段被访问过
-mtime : 修改时间
-ctime : 改过时间
以分钟为单位的:
- amin
- min
- cmin
6、根据权限查找:
-perm [+|-]MODE
MODE: 精确匹配
+MODE:任何一类用户的任意一位权限匹配:有一个就可以,常用于查找某类用户的某特定权限是否存在
-MODE:每类用户的指定要检查的权限位都匹配:每个都要有
7、find的处理动作
-print:显示在标准输出上
-ls :以长格式输出各文件信息
-exec COMMAND {} \; :对查找大的文件执行指定的命令
-ok COMMAND {} \; :交互式的-exec
find把查找到的所有文件一次性的传递给-exec所指定的命令,{}表示占位符,前后要加上空格
find | xargs COMMAND
如有雷同,纯属巧合。这就是我对find的理解。。。。
Linux中find你不知道的秘密,布布扣,bubuko.com
原文:http://songoo.blog.51cto.com/8620619/1368846