文件查找:
locate:非实时查找,模糊匹配,查找根据全系统文件数据库进行,速度快
updatedb:手动生成文件数据库
find:实时,准确,支持众多查找标准,遍历指定目录中的所有文件完成查找,书店慢
find 查找路径 查找标准 查找到一行的处理动作
查找路径:默认为当前目录
查找标准:默认为指定文件下的所有文件
处理动作:默认为显示
匹配标准:-name ‘filename‘:对文件名做精确匹配
文件名通配:“”
*
?
[]
-iname filename:文件名匹配不区分大小写
-regex pattern:基于正则表达式进行的文件
-user username:根据属主查找
-group groupname:根据属组查找
-uid uid:根据uid查找
-gid gid:根据gid查找
-nouser:查找没有属组的文件
-type
f:普通文件 d:目录 c b l p s
-size [+-]
#k #M #G
组合条件:
-a:与
-o:或
-not:非
/tmp/test目录下,属组不是user1,也不是user2的文件
-mtime 修改
-ctime
-atime 访问
[+-]#
-mmin
-cmin
-amin
[+-]#
-perm mode:完全匹配
/mode:匹配一个就行
-mode:文件权限包含此mode权限才显示
运作:
-print:显示
-ls:类似ls -l
-ok command {} \;每次都需用户确认
-exec command {} \;
范例1:任意的.sh文件权限包含111的文件,去除其他用户的执行权限
[[email protected] ~]# find ./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \;
范例2:查找用户不属于root,bin ,student用户的文件
[[email protected] ~]# find /usr -not -user root -a -not -user bin -a -not -user student
范例3,查找/var目录下,属主为root并且属组为apache的文件
[[email protected] ~]# find /var -user root -group apache
范例4,查找/var目录下,最近7天修改过,不是root,也不是apache的用户
[[email protected] ~]# find /var -mtime -7 -not -user root -a -not -user apache
范例5,查找当前系统上没有属组,也没有属主且最近1天内曾被访问过的文件,并将属主属组改为root
find / \(-nouser -o -nogroup\) -a -atime -1 -exec chmod root:root
范例6,查找/etc目录下大于1M的文件,并将文件名写入/tmp/etc.txt文件中
[[email protected] ~]# find /etc -size +1M >> /tmp/etc.txt
范例7,查找/etc目录下所有用户都没有写权限的文件,并显示其详细信息
[[email protected] ~]# find /etc/ -not -perm -222 -ls
xargs