文件查找命令find介绍及使用
find概述
1 find介绍
find是一个实时查找命令,可以精确查找,支持众多查找标准,由于是遍历指定目录中的所有文件a查找的,所以速度相对较慢
2 find的命令格式
find 查找路径 查找标准 查找到以后要处理的动作
查找路径: 默认的是当前路径
查找标准:
(1) 根据文件名查找 -name filename
支持文件名匹配,但严格区分大小写,如要不区分大小写,使用-iname
如:查找/tmp下的以.txt结尾的无文件
find /tmp -name *.txt
(2) 基于正则表达式的文件名查找 -regex parttern
如:查找
(3) 根据文件所有者(属主)查找 -user username
如:查找、tmp下属主是root的文件
find /tmp -user root
(4) 根据文件属组查找 -group groupname
(5) 根据文件属主uid查找 -uid uid
(6) 根据文件属组gid查找 -gid gid
(7) 查找没有属主的文件 -nouser
(8) 查找没有属组的文件 -nogroup
(9) 根据文件的类型查找 -type f、d、c、b、l、p、s
相信大家知道f、d、c ......他们代表的文件类型了,这里就不做说明了
如:查找/tmp下文件类型为目录的文件
find /tmp -type f
(10) 根据文件的大小查找 -size [+|-]#(k、M、G)
+ 表示大于,-表示小于
K、M、G表示单位
如 +7k 表示大于7k的文件
-7M 表示小于7M的文件
(11) 根据文件时间属性查找
根据访问文件的时间 -atime|-amine [+|-]#
根据文件改变时间查找 -ctime|-cmine [+|-]#
根据文件修改时间查找 -mtime|-mmine [+|-] #
[+|-]# 和上面一样,+#表示至少多少时间内没访问过,-#表示#时间之内访问过
(-atime、-ctime、-mtime)的单位是天(-amine、-cmine、-mmine)单位是分钟
(12) 根据文件的权限查找
-perm mode|-mode|/made
mode 表示精确匹配
-mode 表示有一位匹配就行(本身包含或的关系)
/mode 文件权限能完全包含MDOE时才能找到(本身包含且关系)
如:查找查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root的文件;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
处理动作:
-print 显示查找结果
-ls 类似ls -l显示每个文件的信息
-ok COMMAND {} \;
COMMAND是指令,命令行操作 {}表示当前找到的路径文件; \;必须有,表示结束
-exec COMMAND {} \; (与-okl一样,但-ok的每一步操作都需要你确认是否执行,而-exec不用)
如:查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls
3.组合条件:就是组合查找条件的
-a 与条件
-o 或条件
-not 非条件
(如果给出了两个条件没有给连接方式时时默认的就是与逻辑)
not权限最高 带括号的时候,括号要用反义;与的优先级高于或
如:查找/tmp下文件类型为f 且大小大于10k的文件
find /tmp -type d -a -size +10k
查找/usr目录下不属于root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
转载于:https://blog.51cto.com/5272491/1151198