内容概要
find
根据文件的名称和属性查找文件
语法格式:find [查找范围] [参数]
参数:-name 根据文件的名字查找
* 通配符
-iname 根据文件名字查找(忽略大小写)
-size 根据文件大小查找文件
+ 大于
- 小于
无符号 等于
-mtime 根据文件修改时间查询
+ n天以前(可以省略)
- n天之内
-user 根据用户属主查询
-group 根据用户属组查询
-type 按照文件类型查询
-perm 根据文件权限查询
-inum 根据文件index node号码查询
-a 并且
-o 或者
-maxdepth 根据目录深度(必须放在第一个参数)
-exec 将find处理好的结果交给其他命令继续处理
知识储备:dd 生成文件
if 从什么地方读
of 写入到什么文件
bs 每次写入多少内容
count 写入多少次
案例
1.查询/etc目录下hosts文件
find /etc -name 'hosts'
2.查询/etc目录下名称中包含hosts的文件
find /etc -name '*hosts*
3.把/etc目录下所有普通文件打包压缩到/tmp目录
tar -czPf /tmp/1.tar.gz `find /etc -type f | xargs`
| 前面一个命令的结果交给后面一个命令执行
xargs 把处理的文本变成以空格分割的一行
`` 提前执行命令,将结果交给其他命令执行
正则表达式
正则表达式的分类:1.普通正则表达式
2.拓展正则表达式
普通正则表达式:^ 以某字符开头
$ 以某字符结尾
. 匹配除换行符之外任意单个字符
* 匹配前导字符任意个数
[] 某组字符的任意一个字符
[^] 取反
[a-z] 匹配小写字母
[A-Z] 匹配大写字母
[a-zA-Z] 匹配字母
[0-9] 匹配数字
\ 取消转义
() 分组
\n 第n个分组
拓展正则表达式:{} 匹配次数
{n} 匹配n次
{n,} 至少匹配n次
{n,m} 匹配n到m次
{,m} 最多匹配m次
+ 匹配至少一个前导字符
? 匹配0或1个前导字符
| 或
案例
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.txt
6.将nginx.conf文件中以#的开头行和空行全部删除
grep -vE '^#\ *|^$' /etc/nginx/nginx.conf
linux三剑客之grep
grep是linux三剑客之一,文本过滤器(根据文本内容过滤文件)
语法格式:grep [参数] [匹配规则] [操作对象]
参数:-n 过滤文本时,将过滤出来的内容在文件内的行号显示出来
-A 匹配成功,将匹配行后n行显示出来
-B 匹配成功,将匹配行前n行显示出来
-C 匹配成功,将匹配行前后n行显示出来
-c 显示匹配成功行数
-o 显示匹配成功内容
-v 反向过滤
-q 静默输出
-i 忽略大小写
-l 匹配成功,将文本名称打印出来
-R | -r 递归匹配
-E 使用拓展正则(egrep)
知识储备:$? 上一行命令执行结果,0执行成功,其他执行失败
wc 匹配行数
-l 打印匹配行数
-c 打印匹配字节数
案例
1.在/etc目录下,有多少文件包含root
grep -rl 'root' /etc | wc -l