locate:
速度快
不是实时的,每天定时执行把结果导入数据库
模糊匹配
updatedb --手动生成文件数据库,执行时间较长
find:
实时查找
精确
速度慢
支持众多查找标准
find 查找路径 查找标准 处理动作
查找路径:默认当前目录
查找标准:默认为所有文件
处理动作:默认打印出查找出来的内容
匹配标准:
-name 'filename' --对文件名精确匹配
支持通配符:
*,[],?
-iname 'filename' --不区分大小写
-regex PATTERN --基于正则表达式类进行匹配
-user username --根据文件的属主类匹配
-group groupname -- 根据文件的属组类匹配
-uid uid --根据uid匹配
-gid gid --根据gid匹配
-nouser --查找没有属主的文件
-nogroup --查找没有属组的文件
-type --文件类型
f --普通文件
d --目录
c --字符设备,按字符为单位,线性设备;键盘
b --块设备,按块为单位,随机访问的设备;硬盘
l --链接文件
p --管道设备
s --套接字设备
-size --文件大小
[+|-]#k,#M,#G --默认为字节,find -size +50M 大于50M的文件
注意:大小根据ls -lh来的
-mtime --修改时间
-ctime --创建时间
-atime --访问时间
[+|-] -- -最近几天访问过;+有多少天没有访问过
-mmin --分钟;find -amin -5 最近五分钟访问了的文件
-cmin
-amin
-perm mode --权限查找,精确匹配
/mode --find -perm /640 匹配一个就能匹配出来
-mode --文件权限能完全包含才显示;find -perm -640 能匹配出来755
find /etc/ -not -perm /222 -ls --匹配没有写权限的
find -perm -001 --查找其他人有执行权限的文件
find -perm -022 --组和其他人都有写权限
处理动作:
-print --显示
-ls --和ls -l类似
-ok COMMADN {} \; --每次需要用户确认
-exec COMMADN {} \; --不用用户确认
find -perm -020 -exec mv {} {}.new \; --按照权限查找并修改名字
find /etc -size +1M |xargs echo >> /tmp/test.log --空格分隔
find -size +10k -print|awk '{print "echo > "$0}'|bash --清空大于10k的文件,不知道为什么使用echo和cat会出现语法格式错误
find . -type f -name "err*" -exec rename err ERR {} \; # 批量改名(查找err 替换为 ERR {}文件
组合条件
-a
-o
-not