find:实时精确查找,支持众多查找标准,通过遍历目录中的范围文件完成查找,
查找方式:find 路径 标准 处理方法
路径:默认为当前目录,也可以自己指定查找目录
标准:默认为指定路径下的所有文件
处理方法:默认为显示
find匹配标准:
例:查找/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:根据文件的类型查找,普通文件、目录文件、字符设备文件、块设备文件、连接文件等
例:查找/tmp目录下的目录 find /tmp –type
f:普通文件
d:目录
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、-a、-o即 非 与 或
例:/tmp目录下,类型不是目录的文件
find /tmp -not -type d
/tmp目录,不是目录,并且还不能套接字类型的文件
find /tmp -not -type d -a -type s
根据时间戳查找:
-mtime:修改时间
-ctime:访问时间
-atime:改变时间
[+\-]# #:表示天数
5:离此时正好5天
-5:五天之内
+5:至少五天之外
[+|-]#
例:查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件
find /etc -mtime -7 -not -user root -a -not -user student -ls
-perm MODE:根据文件的权限查找,做权限的精确查找
/MODE:表示在权限中有任何一位权限匹配就行 (相当于name的或关系)
-MODE:文件权限能完全包含此MODE时才能显示(相当于name的与关系)
例:其他用户有执行权限的文件:find ./ -perm -001
运作:
-print:显示(默认动作)
-ls:类似ls -l的形式显示每一个文件的详细-
-ok COMMAND {}\;每一个操作需要用户 执行命令,必须以\;结尾,{}代表匹配到的文件
查找当前系统上没有属主或属组且最近一天内曾被访问过的文件,并将其属主组均修改为root
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {}\;
例 : -exec ls -a {} \;
find /etc/ -size +1M -exec echo {} >> /xx/xx \; 或 find /etc/ -size +1M | xargs echo >> /xx/xx 当前目录下的所有普通文件 find . -type f -exec ls -l {} \;
/etc目录下所有用户都没有写权限的文件,显示出其详细信息; find /etc -not -perm /222 -ls
当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属 主属组均修改为root; find / \( -nouser -o nogroup \) -a -atime -1 -exec chown root:root {} \; /etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中; find /etc -size +1M >> /tmp/etc.largefiles