find详解: 文件查找
find:文件查找针对文件名
文件名
find /etc/ -name passwd 在ETC下查找叫Passwd的文件
-name 文件名
-iname 忽略大小写 -i
[root@qfedu.com ~]# find /etc -iname "*.txt"
参数解释:
*:表示所有字符
文件属主和属组
find /home -user jack //属主
find /home -group hr //属组是hr组的文件
文件大小
find /etc/ -size +5M 查找ETC下大于M的文件
-size +/- 大小
-size -5M 取等于5的文件
-size +4M -a -size -5M 取大于4小于5的文件
-size +4M -o -size -5M 取大于4或者小于5的文件
-a 与 -o 或者
find / -size -3M -a -name "*.txt" #查找/ 下面小于3M而且名字是.txt的文件
文件时间
find /opt/ -mtime|-mmin +10 查找大于十天|分钟文件
-mtime 天 -mmin 分
atime访问时间 ctime最后一次改变文件或目录(改变的是原数据即:属性)的时间
mtime文件最近一次被修改时间
文件类型
find /etc -type 【f|d|b|l】
-type 软链接
f 普通文件
d 目录
l 链接
b 块设备
文件权限
find /etc -perm 666 查找ETC下权限为666的文件
-perm 权限
找到后处理的动作 ACTIONS
[root@qfedu.com ~]# find /etc -name "ifcfg*" -exec cp -rf {} /tmp \; #exec命令对之前查找出来的文件做进一步操作----- 查找带ifcfg开头的文件复制到tmp下
[root@qfedu.com ~]# touch /home/test{1..20}.txt
[root@qfedu.com ~]# find /home/ -name test* -exec rm -rf {} \; #{}为前面查找到的内容,\; 格式
find使用xargs
[root@qfedu.com ~]# touch /home/test{1..20}.txt
[root@qfedu.com ~]# # find /home/ -name "test*" | xargs -i cp {} /tmp/ #找到之后删除处理xargs 参数传递
-maxdepth (指定查找深度)
查找文件深度 | 目录深度
实例:
find / -maxdepth 1 -name dev
/dev
[root@localhost /]# find / -maxdepth 2 -name dev
/dev
/sys/dev
[root@localhost /]# find / -maxdepth 3 -name dev
/dev
/proc/sys/dev
/sys/dev
-exec和xargs的区别
-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。
===============
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好;
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。
3、xargs不能操作文件名有空格的文件;
xargs -i {}
综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,那么使用 xargs比较方便; 否则,就要用 exec了。
案例1: 分别找出test5 和除了test5的文件
[root@qfedu.com ~]# find /home/ -name *test5*
[root@qfedu.com ~]# find /home/ ! -name "test5*" # !--取反