find,grep和正则表达式

一、find

1.作用

​ find命令是根据文件的名称或者属性来查找文件

2.语法格式

​ find [查找范围] [参数]

3.常用参数(可独立使用)

序号 查找的根据 参数 补充说明
1 文件名 -name 可以结合通配符使用 *
2 文件名(忽略大小写) -iname 可以结合通配符使用 *
3 文件大小 -size +大于。-小于。没符号,等于。
4 修改时间 -mtime +(可以省略),n天以前。-,n天以内
5 访问时间 -atime -
6 属性修改时间 -ctime -
7 用户属性 -user -
8 用户组属性 -group -
9 文件类型 -type -
10 文件的权限 -perm -
11 index node -inum -

4.辅助参数(必须配合其他参数才能使用)

序号 功能 参数 补充说明
1 并且 -a 可省略,默认是并且
2 或者 -o -
3 查询的目录深度 -maxdepth 需放在第一个参数位
4 将find的处理好的结果交给其他命令继续处理 -exec -

5.案例

1.案例1:查询/etc目录下hosts文件
    [root@localhost ~]# find /etc/ -name 'hosts'
    /etc/hosts
2.案例2:查询/etc目录下名称中包含hosts文件
	[root@localhost ~]# find /etc/ -name '*hosts*'

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

6.知识拓展

1.| : 前面一个命令的结果交给后面一个命令处理
2.xargs : 把处理的文本变成以空格分割的一行
3.`` : 提前执行命令,然后将结果交给其他命令来处理
4.dd : 生成文件
	if 	:从什么地方读
	of 	: 写入到什么文件
	bs 	: 每次写入多少内容
	count 	: 写入多少次

二、grep

1.解释说明

​ grep是Linux三剑客之一,是文本过滤器(根据文本内容过滤文件)

2.语法格式

grep [参数] [匹配规则] [操作对象]

3.参数

序号 功能 参数
1 过滤文本时,将过滤出来的内容在文件内的行号显示出来 -n
2 匹配成功后,将匹配行及匹配行的之后n行显示出来 -A
3 匹配成功后,将匹配行及匹配行之前的n行显示出来 -B
4 匹配成功后,将匹配行及前后的各n行显示出来 -C
5 只显示匹配成功的行数 -c
6 只显示匹配成功的内容 -o
7 反向过滤 -v
8 静默输出 -q
9 忽略大小写 -i
10 匹配成功后,将文本的名称打印出来 -l
11 递归匹配 R/-r
12 使用拓展正则 -E

4.案例

# 在/etc目录下,有多少个文件包含root
	grep -rl 'root' /etc/ | wc -l

三、正则表达式

1.正则表达式的定义

​ 利用一些特殊符号的组合去字符串中筛选出符合条件的数据

2.正则表达式的分类

​ 普通正则表达式,拓展正则表达式

2.普通正则表达式

功能 表达式
1 以某字符开头 ^
2 以某字符结尾 $
3 匹配除换行符之外的任意单个字符 .
4 匹配前导字符的任意个数 *
5 某组字符串的任意一个字符 []
6 取反 [^]
7 匹配小写字母 [a-z]
8 匹配大写字母 [A-Z]
9 匹配字母 [a-zA-Z]
10 匹配数字 [0-9]
11 取消转义 \
12 分组 ()
13 代表第n个分组 \n

3.拓展正则表达式

序号 功能 表达式
1 匹配n次
2 至少匹配n次
3 匹配n到m次
4 最多匹配m次
5 匹配至少1个前导字符 +
6 匹配1个或者0个前导字符 ?
7 |

*{}代表匹配的次数

4.案例

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

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

案例3:匹配本机中有哪些ip
	ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'

案例4:要求将/etc/fstab中的去掉包含 # 开头的行,且要求 # 后至少有一个空格
	grep -vE '^#\ +' /etc/fstab

案例5:找出文件中至少有一个空格的行
	grep -E '\ +' xxx

案例6:将 nginx.conf 文件中以#开头的行和空行,全部删除 
	grep -vE '^\ *#|^$' /etc/nginx/nginx.conf
posted @ 2021-12-20 22:57  recordlife  阅读(110)  评论(0编辑  收藏  举报