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