find简述:实时查找工具,可以遍历指定的起始路径下面的所有文件实现查找。
特性:1.速度略慢。
2. 精确查找
3.实时查找
find语法格式:
find [选项] [查找的起始路径] [查找条件][处理动作]
1.查找路径:具体的路径(默认为当前路径)
2.查找条件:可根据(文件的大小,类型,从属关系,权限等)进行查找,无条件时,默认当前路径下的所有文件。
3.处理动作:就是对查找到的文件进行的操作,删除等。
这里主要说一下查找的条件和处理动作:
1.查找的条件由选项和测试组成
测试有以下几类:
(1)根据文件名字查找:
-name “pattern” 这里支持glob风格的通配符;
-name “pattern” 忽略文件名的大小写;
-regex “pattern” 给予正则表达式查找文件,匹配的是整个路径(不常用)
(2)根据文件的从属关系查找:
-user 用户名 :查找属主为指定用户的所有文件
-group 组名 : 查找属组为指定组的所有文件
-gid GID :查找属主为GID的所有文件
-uid UID:查找属组为UID的所有文件
-nouser :查无属主文件
-nogroup :查无属组文件
(3)根据文件类型查找:-type TYPE
f :常规文件 c:字符设备文件
d :目录文件 l:符号链接文件
b :块字节文件 p:命名管道
s:套接字文件
(4)根据文件大小:-size [+/-] #(数字) [单位](k,M,G)
#:(#-1,#] (文件大小大于#-1小于等于#)
-#:[0,#-1)
+#:(#,∞)
(5)根据时间戳:
天为单位
-atime [+/-] #(数字) [单位] atime 最近访问时间
-mtime [+/-] #(数字) [单位] mtime 最近更改数据的时间
-ctime [+/-] #(数字) [单位] ctime 最近改动数据或元数据的时间
+#:大于#天
-#:小于等于#天
#:大于#-1天小于等于#天
分钟为单位
-amin[+/-] #(数字) [单位] 最近访问时间
-mmin [+/-] #(数字) [单位] 最近更改数据的时间
-cmin [+/-] #(数字) [单位] 最近改动数据或元数据的时间
(6)根据权限查找文件
-perm [/|+] mode(三位八进制)
mode:精确匹配权限
/mode: ugo 三个用户中各自的rwx有一个满足条件即可
-mode:ugo的三个用户中各自的rwx都必须满足条件即可
对以上六个条件可以进行组合:
-a :相当于与运算,条件都要成立
-o : 相当于或运算,条件有一个成立即可
摩根定律: 非a -a 非b = 非(a -o b)
非a -o 非b = 非(a -a b)
例题一 查找/usr目录下不属于root,bin,hadoop的所有文件及目录;
例题二 查找/etc目录下所有用户没有写权限的文件
对于处理动作这里简单说一下:
-print :为默认的输出,可不写
-ls :与ls -l 相似 输出文件的详细信息
-delete : 删除
-fls 路径/文件:将找到的文件以长格式保存在指定的文件中
-ok COMMAND {} \;对查到的文件执行COMMAND命令,缺点每次到要确认文件
-exec COMMAND {} \;对查到的文件执行COMMAND命令,不用每次都确认文件