Linux文件管理类命令之find

find 查找文件
这个命令的方式是通过翻书的方式查找,而且是精确匹配查找,所以速度要慢一点。
Linux文件管理类命令之find
/etc/ 是指定查找范围
-name 是查找方法,以文件名查找
passwd 是包含该字符的文件
而且find的查找是查找基名(文件名)
-name "keywords"通过文件名查找
-iname "keywords" 通过文件名查找,但是不区分大小写
Linux文件管理类命令之find
find 支持glob风格的通配符 *(任意字符) ?(单个字符) ^
Linux文件管理类命令之find
-user 按照用户来查找文件
Linux文件管理类命令之find
如何去验证这些被查到的文件呢?稍后再讲
-group 按照组名查找文件
Linux文件管理类命令之find
-uid 根据UID查找文件
Linux文件管理类命令之find
-nouser 查看没有属主的文件
Linux文件管理类命令之find
-nogroup 查看没有属组的文件
Linux文件管理类命令之find
-type 根据文件类型查找文件
文件类型有f 普通文件 b 块设备文件 c字符设备文件 s套接字设备文件 l符号链接文件 d目录文件 p管道文件
Linux文件管理类命令之find
Linux文件管理类命令之find
根据文件大小查找文件
这里要说下,命令中文件大小的默认单位是k 可以指定M 或者 G,-size 有两个选项 +和-
+大于命令中的参数,比如1M,那么命令是寻找大于1M以上的文件
-小于命令中的参数,比如1M,那么命令是寻找小于1M的文件
举例说明,参数为175M,不加任何选项的情况下,查找范围为(174,175]。
+号的查找范围(175,无限大)
-号的查找范围(0,174]
Linux文件管理类命令之find
Linux文件管理类命令之find
根据时间戳 查找文件
atime 访问时间 以天为单位
mtime 修改时间 以天为单位
ctime 更改时间 以天为单位
这里注意时间没有将来时。
这些参数也有+和-两个选项
举例:前三天被访问的文件 就只写3 意思就是(-3.9,-3] 不能到前4天
+3 表示至少3天没有被访问的文件 就是从远古到前4天(远古,-4),应为3.9天就算前3天了
-3 表示至多3天没有被访问的文件 就是从前2.9天到现在
针对a c m时间还有 以分钟为单位 -cmin -amin
Linux文件管理类命令之find
一天前被访问的文件
Linux文件管理类命令之find
Linux文件管理类命令之find
还可以根据权限来查找文件
-perm 也有两个选项 / 和 - 
/的意思是只要属组,属主和其他用户权限有一组权限匹配就算匹配文件
Linux文件管理类命令之find
因为所有文件的属主的权限是6,所以尽管其他权限不匹配也不计较
Linux文件管理类命令之find
如果需要精确匹配,就需要使用-的选项了
Linux文件管理类命令之find
Linux文件管理类命令之find
只有shanghai的权限满足寻找条件。
综上所述,权限匹配,就是说只要可以满足寻找条件,其他权限可以忽视。按照上面的演示效果来看,shanghai的权限是777 属主、属组和其他用户的权限都只要有rw就行了,至于x的权限,寻找文件时不考虑。
现在讲一个特殊的匹配条件002,这个表示属主和属组的权限不考虑,只考虑其他用户的写权限。
处理动作
-ls 列出明细
Linux文件管理类命令之find
将匹配的文件进行ls的操作
-print 输出至标准输出,这个也是默认选项
-delete:删除匹配到的文件 这个动作很危险
-fls 将查找到文件的详细信息输出到指定文件中
Linux文件管理类命令之find
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令 每次操作都有提问 
Linux文件管理类命令之find
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令 ,这个没有提问
Linux文件管理类命令之find
说一下{}的作用,{} 代表匹配到的文件名
Linux文件管理类命令之find
Linux文件管理类命令之find
注意:find + 命令 的方式是先查找出所有符合条件的文件路径,再一次性传递给后面的命令,但有些命令不能接受过长的参数,此时命令执行会失败,xargs会解决这类问题。
find xxxsss | xargs xss 
Linux文件管理类命令之find

这里有一个练习:
查找/usr目录下不属于root ,bin的所有文件或目录,用两种方法
Linux文件管理类命令之find
Linux文件管理类命令之find
这个练习注意两个点:1、查询条件之间默认是与的关系 两个条件必须都满足 2、如果在命令中有括号需要转义。

还有一个练习:
查找/etc目录下所有用户都没有写权限的文件
这个需要仔细品味哈,所有用户都没有写权限,怎么写? ! -perm -222 这个写法被验证是错误的。
为什么?-perm -222 是所有用户都有写权限 前面加一个! 就是至少有一个用户没有写权限,那么这个匹配条件就错了。
应该这么写,至少有一个用户有写权限,再非一下,就是所有用户都没有写权限
Linux文件管理类命令之find
这样才对

关于查询条件,两个及两个以上的条件之间,默认是且/与的关系。
-a 就是且 或者 与的关系
-o 就是或的关系
!就是非的关系
条件之间的常用公式是:
!A –a !B=!(A –o B)
!A –o !B=!(A –a B)



本文转自 yueyue207 51CTO博客,原文链接:http://blog.51cto.com/yueyue207/2049206

上一篇:Linux内核源码分析--内核启动之(5)Image内核启动(rest_init函数)(Linux-3.0 ARMv7)【转】


下一篇:vss报错Workgroup无法访问,您可能没有权限使用网络资源解决办法