漫天飞雪

文件查找

文件查找

find命令的基本语法

命令+路径+选项+表达式+动作

find查找分类

1.以名字查找文件

-name
在/etc/下找到以.sh结尾的文件
[root@oldboyedu ~]# find /etc/ -name '*.sh'
[root@oldboyedu ~]# find /etc/ -name '*.sh' -ls

2.文件类型查找

文件类型

​ d:目录(directory)
​ f:文件(file)
​ c:字符设备
​ b:块设备
​ l:软链接文件
​ s:套接字文件(socket)
​ p:管道文件

-type
查找/etc/目录下所有带conf的文件
[root@oldboyedu ~]# find /etc/ -type f -name '*conf*'
	
查找当前系统中,所有的管道文件
[root@oldboyedu ~]# find / -type p
/run/systemd/inhibit/1.ref
/run/systemd/sessions/1.ref
/run/systemd/initctl/fifo
[root@oldboyedu ~]# find / -type p -ls
39101    0 prw-------   1 root     root            0 Jul  4 17:18 /run/systemd/inhibit/1.ref
41084    0 prw-------   1 root     root            0 Jul  4 17:18 /run/systemd/sessions/1.ref
21199    0 prw-------   1 root     root            0 Jul  4 17:18 /run/systemd/initctl/fifo

3.根据文件大小查找

-size
-a:多个条件同时满足
-o:或者,多个条件有一个满足即可
!:去反
+ :大于
- :小于
  :等于

	查找/目录下大于1G的所有文件
	[root@oldboyedu ~]# find / -size +1G
	查找一个脚本,名字带con
	[root@oldboyedu ~]# find / -name '*.sh' -name '*con*'
	查找一个脚本,名字不带con
	[root@oldboyedu ~]# find / -name '*.sh' ! -name '*con*'

4.根据时间查找文件

-mtime:
		+n:寻找n天之前(当天的不算)
		-n:查找n天内的文件(当天的文件算在内)
		 n:查找第n的文件(当天的不算)
//创建测试文件
[root@zls ~]# for i in `seq -w 30`;do date -s  201802$i && touch file-$i;done

//查找7天以前的文件(不会打印当天的文件)
[root@zls ~]# find ./ -iname "file-*" -mtime +7

//查找最近7天的文件,不建议使用(会打印当天的文件)
[root@zls ~]# find ./ -iname "file-*" -mtime -7

//查找第7天文件(不会打印当天的文件)
[root@zls ~]# find ./ -iname "file-*" -mtime 7

//本地文件保留最近7天的备份文件, 备份服务器保留3个月的备份文件
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +90 -delete

5.根据用户来查找文件

	-user:指定文件属主用户
	-group:指定文件属组
	-nouser:查找没有属主的文件
	-nogroup:查找没有属组的文件
	
	[root@oldboyedu ~]# find /home/ -user zls -a -group 
	[root@oldboyedu ~]# find /home/ -user zls -group root
	[root@oldboyedu ~]# touch /home/123.txt
	[root@oldboyedu ~]# chown zls.root /home/123.txt 
	[root@oldboyedu ~]# find /home/ -user zls -group root
	//查找没有属主
	[root@zls ~]# find /home -nouser
	//查找没有属组
	[root@zls ~]# find /home -nogroup

	[root@oldboyedu ~]# find /home -nogroup -nouser

注意:$() 和 `` :将引起 来的部分当成一个命令执行。

6.根据权限查找

-perm
	644 :精确查找
	-644:模糊查找

find处理动作

动作 含义
-print 打印查找到的内容(默认)
ls 以长格式显示的方式打印查找到的内容
-delete 删除查找到的文件(仅能删除空目录
-ok 后面跟自定义shell命令(会提示是否操作
-exec 后面跟自定义shell命令(标准写法-exec ;)
//打印查询到的文件
[root@zls ~]# find /etc -name "ifcfg*"
[root@zls ~]# find /etc -name "ifcfg*" -print
[root@zls ~]# find /etc -name "ifcfg*" -ls

//拷贝文件
[root@zls ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;

//-ok会不断提示
[root@zls ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;

//删除文件
[root@zls ~]# find /etc -name "ifcfg*" -exec rm -f {} \;
[root@zls ~]# find /etc -name "ifcfg*" -delete

find结合xargs

#xargs将查找到结果一个一个的处理
[root@zls ~]# touch file.txt
[root@zls ~]# find . -name "file.txt" |xargs rm -f
[root@zls ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /var/tmp
posted @ 2019-07-04 22:15  1naonao  阅读(272)  评论(0编辑  收藏  举报