作用:实时查找工具,通过遍历指定路径完成问件查找,递归地在层次目录中处理文件
find搜索目录树上的每一个文件名,它从左至右运算给定的表达式,按照优先规则进行匹配,直到得出结果(左边运算在’与’操作中得出假,在’或’操作中得出真),然后 find移向下一个文件名。
第一个以 '- ', ‘(’ , ‘)’ , ‘,’ 或 ‘!’ 这些字符起始的参数是表达式的开始;在它之前的任何参数是要搜索的路径,在它之后的任何参数都是表达式的余下部分。如果没有路径参数,缺省用当前目录。如果没有表达式,缺省表达式 用 ‘-print’
当所有文件都成功处理时 find 退出并返回状态值0。如果发生错误则返回一个大于0的值。
特点:精确查找,实时查找
可能只搜索用户具备读取和执行权限的目录
查找速度略慢
格式:find 目录 选项 动作
目录:/,/etc,/var,/home之类都是
选项:
搜索目录层级
-maxdepth level :最大搜索目录深度
-mindepth level :最小搜索目录深度
-name filename :根据文件名匹配,支持通配符
例:find /etc -name pa*wd
-iname :忽略大小写
-inum :根据iNode节点号查找
-samefile name :相同iNode号的文件
-links # :连接数为#的文件
-regex "pattern" :以模式匹配整个文件路径,而非文件名称
例:find /data -regex ".*\.sh$"
根据文件属主和属组查找;
-user username:查找属主为指定用户的文件
-group groupname:查找属组为指定组的文件
-uid useruid:查找属主为指定UID的文件
-gid groupgid:查找属组为指定GID的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
根据文件类型查找:
-type:
b 特殊块文件(缓冲的)
c 特殊字符文件(不缓冲)
d 目录
p 命名管道 (FIFO)
f 普通文件
l 符号链接
s 套接字
空文件或目录
-empty
-type d -empty
根据文件大小:
-size:常用单位(K M G c(Byte))
+#M:表示大于#M的文件,+5M
-#M:表示小于于#M的文件,-5M
根据时间查找:
以天为单位:
-atime:访问时间
+,-:+10,超过十天访问过的文件,-10十天内访问过的文件
-mtime:修改时间,文件内容最后一次修改的时间,文件内容修改
-ctime:改变时间,文件最后一个改变的时间,属性及文件名改变
以分钟为单位:
-amin:访问时间
-mmin:修改时间
-cmin:改变时间
根据文件权限查找:
-perm:
mode:精确查找
/mode:任何一类(u,g,o)对象的权限只要匹配一位就满足条件。或的关系。早期用+号表示
-mode:每一类对象都必须拥有指定权限才满足条件
0:表示不关注
例:find -perm 755 file,精确匹配权限755的文件
find -perm /222 file,属主,属组,其他人,其中一个有写权限就匹配
find -perm -222 file,属主,属组,其他人,必须每个都有写权限就匹配
find -perm -002 file ,只有其他人有写权限时才匹配
动作:
-print:默认的处理动作,将匹配到的显示到屏幕
-ls:类似于ls -l查看文件
-delete:匹配到的内容删除(危险,不要用)
-fls file:查找到的文件以长格式信息保存到指定的文件中
-ok command {} \; :对查找到的文件,执行由command位指定的命令,缺点是对每个匹配的文件执行命令前都需要确认
例:find /data -name "*.sh" -ok mv {} /tmp \;
{}:引用前面find匹配到的文件,引用查找到的文件名称自身,例如匹配的是ping.sh,name{}内就位{ping.sh}
\;:语法格式,必须以\;结尾
-exec command {} \; :对查找到的文件,执行由command位指定的命令,和ok不同的是不需要一个一个确认
例:find /data -name "*.sh" -ok mv {}.bak /tmp \;
{}.bak:移动到/tmp目录下改名为以.bak为后缀的文件
查找/var/目录下不属于root、lp、gdm的所有文件
[root@centos7 ~]#find /var ! -user root ! -user lp ! -user gdm -type f
/var/lib/colord/mapping.db
/var/lib/colord/storage.db
/var/lib/nfs/state
/var/lib/unbound/root.key
/var/lib/setroubleshoot/setroubleshoot_database.xml
/var/lib/setroubleshoot/email_alert_recipients
/var/lib/postfix/master.lock
/var/spool/mail/rpc
/var/spool/mail/cheng
/var/spool/mail/ning
叹号表示取反。