一.find命令在一个目录(及子目录)中搜索文件
locate在数据库搜索文件
find与loacte的区别
find:
实时查找:速度慢
精确匹配
locate:
依赖于数据库
非实时查找,结果非精确
查找速度快
模糊查找
二.find命令用法:
find [options] [查找路径] [查找条件] [处理动作]
查找路径:默认为当前目录
查找条件:默认为查找指定路径下的所有文件
处理动作:默认为显示
1查找条件
1)根据文件名查找:
–[i]name "文件名称”
文件名支持通配符 (* ? [ ] [^ ])
和i一起使用,查找时不区分文件名字符大小写。
eg1如下所示查找文件名含yum的文件,不区分大小写。
2)根据文件属主属组查找:
-user UserName 或者-uid UID 根据文件属主或者uid查找;
-nouser 查找没有属主的文件
-group GroupName 或者-gid GID 根据文件属组或者gid查找;
-nogroup 查找没有属组的文件;
Eg2查找/tmp目录下属组为root的文件
3)根据组合条件查找:
-a: 与,同时满足
-o: 或,
-not, !:非,取反
非A,并且非B: 非(A或B)
非A,或非B: 非(A且B)
Eg3查找/tmp目录下属主为hyd并且文件名为aaa的文件。
4)根据文件类型查找
-type [f,d,b,c,l,p,s]
f: 普通文件
d: 目录
b: 块设备
c: 字符设备
l: 符号链接文件
p: 命名管道
s: 套接字
eg4查找/tmp目录下是目录的文件
5)根据文件大小查找
-size [+|-]#Unit #: (#-1)
Unit(常用单位):k, M, G
Eg5查找/tmp目录下
文件大于2k的文件。
6)根据时间戳查找:
以天为单位(time):
-atime(访问时间)[+|-]#
+: 表示(#+1)天之外被访问过;
-: 表示#天之内被访问过;
无符号:表示短于(#+1)> x >=#天的时间段被访问过;
-mtime(修改时间)用法同上
-ctime(改变时间)用法同上
以分钟为单位(min):
-amin[+|-]#用法同上
-mmin用法同上
-cmin用法同上
Eg6查找/tmp目录下文件改变时间在30分以内的文件。
7)根据文件权限查找
-perm [+|-]MODE
MODE:精确匹配
+MODE: 任何一类用户的任何一位权限匹配
-MODE: 每类用户的指定要检查的权限位都匹配;
Eg7查找/tmp目录下文件所有文件属主具有读写,属组具有写其,他具有执行的权限的文件。
2根据处理动作查找
-print:打印在标准输出上;
-ls:以长格式输出各文件信息;
-execCOMMAND {} \; :对查找到的文件执行指定的命令
{}表示占位符,接收来自前方find命令所查找的文件,并对文件操作。
Eg8查找/tmp目录下文件改变时间在60分种以内的文件并且列出来。
-okCOMMAND {} \; : 交互式的-exec;
Eg9查找/tmp目录下文件改变时间在30分以内的文件,需要交互。
find | xargs COMMAND
Eg10查找/tmp目录下文件名含doc的文件无法删除
管道传递的事字符串,而不是文件,不能做文件处理,可以用xargs
Eg11查找/tmp目录下文件名含doc的文件可以法删除
find把查找到的所有文件一次性地传递给-exec所指定的命令xargs命令每次只获取一部分文件而不是全部。下面的例子只能用-exec,不可以用xargs.
Eg12查找/tmp目录下文件名含doc的文件,并重命名为dox
阅读(1865) | 评论(0) | 转发(0) |