之前所学的grep egrep fgrep 都是用来查找文本中的某个字符匹配的
现在来学一下查找文件命令 locate find
locate
此命令是非实时查找文件,它是根据全系统文件数据库进行查找的,
仅用模糊匹配,非精确查找
locate filename 即可实现查找其它相关文件
但是注意有时候如果系统是刚安装的有可能还没建立此数据库,使用该命令会提示查找不到数据库
不过不用担心使用updatedb即可自动生成数据库,生成数据库的时候有时候会很慢,这个根据用户的
磁盘上所放的东西多少决定的
db库存放在/var/lib/mlocate/mlocate.db
这个特点就是速度快
find命令
特点:实时查找
精确匹配,遍历指定目录中的所有文件完成查找,所以速度慢
支持众多查找标准
用法格式:
find 查找路径 查找标准 查找到以后的处理动作action
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
action :默认为打印到屏幕输出
查找标准
匹配标准:
-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 中括号可省略+-表示大于小于#号是数字 按文件大小查找文件
组合条件
-a and 与
-o or 或
-not 非
用法例: find ./ -not -user user2 -a -not -user user1
解释:查找非属主为user2且非属主为user1的文件
此条命令还可以这样写
find ./ -not \( -user user -o -user user1\) 摩根定律你懂得!
-mtime 修改时间
-ctime 改变时间
-atime 访问时间
[+|-] #
-5 表示5天之内
+5 表示5天之前
-mmin 修改分钟
-cmin 改变分钟
-amin 访问分钟
和上边的区别是上方的单位是天,下方的单位是分钟
-perm 644 权限匹配,这个表示查找精确匹配644权限的文件
-perm /644 权限匹配,表示匹配其它任意一位权限都OK
一位权限的意思:644 为rw-r--r-- 表示匹配其中任何一个权限就打印到屏幕上
-perm -644 表示匹配包含该权限的比如755 777 744 只要大于这个这个644的权限就OK,
切记不可小于这个权限比如633这个就不行
便于理解/表示或的意思 即其中只要有一位匹配就显示
-表示完全匹配 即只可大于不可小于呵呵
查找到以后处理Action 动作
-print 打印到屏幕
-ls 类似ls -l的形式显示匹配到的文件
-ok command {} \; 即可在匹配到的文件后加要执行的命令,这个是固定格式
(注:此命令被执行时需要确认每一条)
-exec command {} \; 同上一条一样,不同的是这个命令执行时不会提示是否需要执行
所以要在执行前确认确认再确认!!
xargs command 这个也是后边可以接其它命令的
用法 find /etc -size +1M | xargs echo >> /tmp/large.file
最后加一个问题 我没想出来希望大神帮助一下看看怎样组合命令!!
1.查找一下/etc目录下所有用户都没有执行权限的文件
已找到答案 find /etc -not -perm /222
Thanks for your watching!
本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1643763如需转载请自行联系原作者
Winthcloud