文件查找:
find:实时精确查找,支持众多查找标准,遍历指定目录中的所有文件完成查找,速度慢(目录越大,查找速度越慢)
查找方式:查找路径、查找标准、查找到以后的处理运作
查找路径:默认为当前目录,也可以自己指定查找目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示
find后跟的匹配标准:
-name ‘FILENAME’:对文件名做精确匹配
(对所查找的文件严格区分大小写)
如:查找/etc目录下是否有passwd
find /etc –name ‘passwd’
文件名通配:
*:任意长度的任意字符
查找以passwd结尾的文件: find /etc –name ‘passed*’
查找以passwd开头的文件: find /etc –name ‘*passwd’
?:其前面字符的0次或者1次
[]:范围内的
-iname ‘FILENAME’:对文件名匹配是不区分大小写的
-regex PATTERN:基于正则表达式进行文件名匹配
-user USERNAME:根据用户属主查找
-group GROUPNAME:根据用户属组查找
查找/var目录下属主为root并且属组为mail的所有文件
find /var -user root (-a) -group mail –ls
-uid UID(用户号):根据UID查找
-gid GID(基本组号):根据GID查找
一旦某个用户被删除之后用-user\-group查找就行不通了,而用ID号查找则可以
-nouser:查找没有属主的文件
这个用法十分有用,我们应该定期的用这个命令去查找一下没有属主的文件,免得其他人趁虚而入,因为一些没有属主的文件其他人可能也有权限去访问
-nogroup:查找没有属组的文件
-type:根据文件的类型查找,文件类型氛围很多种,如普通文件、目录文件、字符设备文件、块设备文件、连接文件等
f:普通文件
d:目录
如:查找/tmp目录下的目录 find /tmp –type
c:字符文件
b:块文件
l:链接文件
p:管道文件
s:套接字文件
如:查找/tmp目录下的套接字文件 find /tmp –type s
-size: 根据文件大小查找
(后边跟大小单位,默认大小为字节)
[+|-]#k :大于或小于1K的文件,如果没有+\-号则表示精确为1K
查找/etc目录下大于1M的文件
find /etc -size +1M
组合条件查找:
如果给了两个条件,但是没有给连接方式是什么,则默认为用-a
-a:两个都满足(与)
如:/tmp目录下,没有属主,并且类型为目录的文件
find /tmp -nouser -a -type d
-o:满足其中一个(或)
如:/tmp目录下,没有属主,或者类型为目录的文件
find /tmp -nouser -o -type d
-not:一个都不满足(非)
优先级:-not、-a、-o
如:/tmp目录下,类型不是目录的文件
find /tmp -not -type d
/tmp目录,不是目录,并且还不能套接字类型的文件
find /tmp -not -type d -a -type s
find /tmp -not \( -user user1 –o –user user2\ )
根据时间戳查找:
-mtime:修改时间
-ctime:访问时间
-atime:改变时间
[+\-]# #:表示天数
5:离此时正好5天
-5:五天之内
+5:至少五天之外
单位为分钟:
-mmin:访问时间
-cmin:修改世间
-amin:改变时间
[+|-]#
如:查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件
find /etc -mtime -7 -not -user root -a -not -user student -ls
-perm MODE:根据文件的权限查找,做权限的精确查找
/MODE:表示在权限中有任何一位权限匹配就行 (相当于name的或关系)
-MODE:文件权限能完全包含此MODE时才能显示(相当于name的与关系)
查找当前目录下权限为644的文件:find ./ -perm 644
644:rw-r--r--
755:rxwr-xr-x
750:rwxr-x---
查找其他用户有执行权限的文件:find ./ -perm -001
运作:
-print:显示(默认动作)
-ls:类似ls -l的形式显示每一个文件的详细-
-ok COMMAND {}\;每一个操作需要用户确定
执行命令,必须以\;结尾,{}代表匹配到的文件
-exec COMMAND {}\ ;不需要确认
查找当前系统上没有属主或属组且最近一天内曾被访问过的文件,并将其属主组均修改为root
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {}\;