find -name 指定名称
-iname 不指定大小写
-maxdepth 搜索深度
-not -iname 不区分大小写的名字,除name以外的都显示
find / -maxdepth 2 -maxdepth 5 -not -name passwd
查找根目录下1级目录到4级目录,除passwd,不区分大小写的文件
locate:
在全系统查找文件内容,非实时,查找是根据全系统文件数据库进行的,模糊匹配
updatedb:手动生成文件数据库
速度快
find:
实时查找
精确
遍历指定目录中的所有文件完成查找,所以速度慢。
find 查找路径 查找标准 查找到以后的处理动作
默认为当前目录
默认为指定路径下的所有文件
默认打印到屏幕上
匹配标准:
-name 'filename' :对文件名做精确匹配
文件名通配:
*:任意长度的任意字符
?
[]
-iname 'filename' 文件名匹配不区分大小写
-regex PATTERN: 基于正则表达式进行文件名匹配
-user USERNAME:文件的属主查找
-group GROUPNAME: 文件属组查找
-uid UID
-gid GID
-nouser 没有属主的文件
-nogroup 没有属组的文件
-type 文件类型
f:普通文件
d:目录
c:字符设备
b:块设备
l:连接文件
p:管道文件
s:套接字文件
-size
[+|-]#k
#M
#G
组合条件:
-a与
-o或
-not非
find ./ -not -user user1 -a -not -user user2
find ./ -not \(-user user1 -o -user user2\)
查找当前目录下,属主既不是user1和User2的文件
-mtime
-ctime
-atime
[+|-]#(天)
-mmin
-cmin
-amin
[+|-]#
-perm MODE 精确匹配
-perm -mode 完全包含Mode时才能显示
-perm /mode 有一个匹配就行
perm /022 组有写权限或者其他用户有写权限
perm -022 其他组和其他用户都有写权限
find动作:
-print:显示
-ls:类似ls -l的形式显示每一个文件的详细
-ok COMMAND { } \;每一次操作都需要用户确认
-exec COMMAND { } \;不需要确认
find ./ -perm -006 -exec chmod o-w {} \;
find ./ -perm -020 -exec mv {} {}.new \; 对查找包含组有写权限的重命名原来名字+.new
find ./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \; 查找*.sh的文件并且都有执行权限的文件,再将其他用户的执行权限去除。