find,正则,gerp

1.find

查找'文件'
根据文件的名称或者属性查找文件
man find

语法格式:
	find [查找范文] [参数]

参数:
	-name		:按照文件的名字查找文件
		find / -name '文件名称'
	*		:通配符
	-iname		:按照文件的名字查找(忽略大小写)
	-size		:按照文件的大小查找
		+		:大于指定文件大小
		-		:小于指定文件大小
		没有符号	:等于
	-mtiame		:按照修改时间查询
		+n		:n天以前
		-n		:n天以后
	-ctime		:同上
	-atime		:同上
	-user		:按照用户的属主查询
	-group		:按照用户的属组查询
	-type		:按照文件类型查询
	-inum		:依据文件的index node号查询
	-perm		:按照文件额权限查询(数字权限)
	
	-a		:并且(链接多个参数。默认)
	-o		:或者
	-maxdepth	:查询的目录深度(必须放置第一参数位)
	-exec		:将前面find处理好的结果交给其他命令执行

知识储备:
	dd	:生成指定大小文件
		dd if=/dev/zero of=100.txt bs-10M count-10
			if	:从什么地方读文件
			of	:写入到什么文件
			bs	:每次写入多少大小
			count	:写入多少次
案例:
	案例1:
	查询/etc目录下hosts文件
	find [/etc/] -name 'hosts'

	案例2:
	查询/etc目录下名称中包含hosts文件
	find /etc/ -name '*hosts*'
	'*hosts'

	案例3:要求把/etc目录下,所有的普通文件打包压缩到/tmp目录
	tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`

知识储备:
	|:前面一个命令的结果交给后面的一个命令处理
	
	xargs:把处理的文本变成以空格分割的一行
	``:提前执行命令,然后将结果交给其他命令来处理

grep命令

三剑客之一:grep(文本过滤器)
	根据文本内容过滤文件

语法格式:
	grep [参数] [匹配规则] [操作对象]

参数:
	-n		:过滤文本时,将过滤出来的内容在文件内的行号显示出来
	-A		:匹配成之后将匹配行后n行显示出来
		grep -n -A ‘规则’ 操作对象
	-B		:前n行,同上取反
	-C		:前后n行,同上
	-c		:只显示匹配
	-o		:只显示匹配成功的内容
	-v		:反向过滤(打印内容是非匹配对象)
	-q		:静默输出
	-i		:忽略大小写
	-l		:匹配成功之后将文本的名称打印出来,不成功不打印
	-R|-r		:递归匹配
	-E		:使用扩展正则等价于egrep

知识储备:
	echo $?	:命令行中上一行命令执行的结果
		0	:代表执行成功
		其他	:执行失败
		
	wc	:匹配行数
		-l	:打印匹配行数
		-c	:打印匹配的字节数

正则

1.正则表达式分类:
	1.普通正则匹配
	2.扩展正则匹配

2.普通正则匹配:
	^		:以某字符开头
	$		:已某字符结尾
	.		:匹配除换行符意外的任意单个字符
	*		:匹配前导字符的任意个数
	[]		:某组字符串内的任意字符
	[^]		:取反
	[a-z]		:匹配小写字母
	[A-Z]		:匹配大写字母
	[a-zA-Z]	:匹配字母
	[0-9]		:匹配数字
	\		:取消转义
	()		:分组 
		\n		:代表第n个分组
3.扩展正则表达式:
	{}		:匹配的次数
		{n}		:匹配n次
		{n,}		:匹配最少n次
		{n,m}		:匹配n-m次
		{,m}		:最多匹配m次
	+		:匹配至少一个前导字符
	?		:匹配一个或零个前导字符
	|		:或

案例:
	案例1:在/etc/passwd文件中,匹配以ftp开头的行
		grep '^ftp'  /etc/passwd

	案例2:在/etc/passwd文件中,匹配以bash结尾的行
		grep 'bash$'  /etc/passwd

	案例x:匹配
		grep 'f*'  test.txt 0和多个都匹配出来

	案例3:匹配本机中有哪些ip
		ip a | egrep -o '[0-9]{1,3}/.{3}[0-9]{1,3}'
	
	案例4:将/etc/fstab中去掉包含#开头的行,且要求# 后至少有一个空格
		egrep '^#\ +'  /etc/fstab

	案例5:找出文件中至少有一个空格的行
		egrep '\ +'
		
	案例6:将nginx.conf文件中以#开头的行和空行全部排除
		egrep -v '^\ *#|^$'  /etc/nginx/nginx.conf

上一篇:find、三剑客之grep、正则表达式


下一篇:linux中的正则