Atopos

导航

find、正则表达式及三剑客之grep

1.find

1.1.概念

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

1.2.语法格式

关键字:find

参数1:-name(按照文件的名字查找文件)
   *:通配符
eg:
[root@localhost ~]# find /tmp/ -name 'test01'
/tmp/test01
[root@localhost ~]# find /etc/ -name '*hosts*'
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny

参数2:-iname(按文件的名字查找文件忽略大小写)
eg:
[root@localhost ~]# find /etc/ -iname 'Hosts'
/etc/hosts

参数3:-size(按照文件的大小查找文件)
   +:(大于)
   -:(小于)
没符号:等于
eg:
[root@localhost ~]# find ./ -size 100M
./100.txt

参数4:-mtime(按照修改的时间查询)
         +:(可以省略不写 表示n天以前)
         -:(n天以内)
     -atime
         +
         -
     -ctime
         +
         -
eg:
[root@localhost ~]# find ./ -mtime 3
./anaconda-ks.cfg

参数5:-user
eg:
[root@localhost ~]# find ./ -user test02
参数6:-group
eg:
[root@localhost ~]# find ./ -group root

参数7:-type(按照文件类型查找文件)
eg:
[root@localhost ~]# find /root/ -type f

参数8:-perm(按照文件的权限查找文件)
eg:
[root@localhost ~]# find /root/ -perm 600

参数9:-inum(根据index node号码查询)
eg:
[root@localhost ~]# find /root/ -inum 135211159

搭配使用参数:
           -a:并且(可以省略,默认是并且)
           -o:或者()
           -maxdeth:查询的目录深度(必须放置于第一个参数位)
eg:
[root@localhost ~]# find /etc/ -maxdepth 2 -name '1.sh'
[root@localhost ~]# find /etc/ -maxdepth 2 -a -name '1.sh'
[root@localhost ~]# find /etc/ -maxdepth 2 -0 -name '1.sh'

PS:
   dd :生成文件
   if:从什么地方读
   of:写入到什么文件
   bs:每次写入多少内容
   count:写入多少次
   eg:
      dd if=/dev/zero of=100.txt bs=10M count=10

eg:要求把/etc目录下,所有的普通文件打包压缩到/tmp目录
[root@localhost /tmp]# tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`
    | : 前面一个命令的结果交给后面一个命令处理
	xargs : 把处理的文本变成以空格分割的一行
	`` : 提前执行命令,然后将结果交给其他命令来处理

2.正则表达式

2.1.正则表达式的分类

1.1普通正在表达式
1.2拓展正则表达式

2.2.普通的正则表达式

  ^ :以某字符开头
  [root@localhost ~]# grep '^ftp' /etc/passwd
  $:以某字符结尾
  [root@localhost ~]# grep 'bash$' /etc/passwd
  .:匹配以换行符以外的任意字符
  [root@localhost ~]# grep 'test..' /etc/passwd
  *:匹配前导字符的任意个数
  [root@localhost ~]# grep 'a*' 1.txt
  []:某组字符串的任意一个字符
  [root@localhost ~]# grep '^[ca]' 1.txt
  [^]:取反
  [root@localhost ~]# grep -o '^[^ca]' 1.txt
  [a-z]:匹配小写字母
  [A-Z]:匹配大写字母
  [a-zA-Z]:匹配字母
  [0-9]:匹配数字
  \:取消转义
  ():分组
    \n:第几个分组

2.3.拓展正则

  {}:匹配的次数
    {n}:匹配n次
    {n,}:匹配至少n次
    {n,m}:匹配n到m次
    {,m}:匹配最多m次
  +:匹配至少有一个前导字符
  ?:匹配一个或者零个前导字符
  |:或(整体的或者)


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

3.grep

3.1概念

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

3.2.语法结构

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

参数:-n(过滤文本时,将过滤出来的内容在文件内的行号显示出来)
eg:
[root@localhost ~]# grep -n 'root' /etc/passwd

参数:A(匹配成功后,将匹配行的后n行也显示出来)
eg:
[root@localhost ~]# grep -n -A 2 'root' /etc/passwd

参数:-B(匹配成功之后,将匹配行的前n行也显示出来)
eg:
[root@localhost ~]# grep -n -B 2 'root' /etc/passwd

参数:-C(匹配成功之后,将匹配行的前后n行显示出来)
eg:
[root@localhost ~]# grep -n -C 2 'root' /etc/passwd

参数:-c(只显示匹配成功后的行数)
eg:
[root@localhost ~]# grep -c 'root' /etc/passwd

参数:-o(只显示匹配成功后的内容)
eg:
[root@localhost ~]# grep  -o 'root' /etc/passwd

参数:-v(反向过滤)
eg:
[root@localhost ~]# grep -n -v 'root' /etc/passwd

参数:-q(静默输出)
eg:
[root@localhost ~]# grep -n -v -q 'root' /etc/passwd

参数:-i(忽略大小写)
eg:
[root@localhost ~]# grep -n -v -i 'Root' /etc/passwd

参数:-l(匹配成功之后,将文本的名称打印出来)
eg:
[root@localhost ~]# grep -rl 'root' /etc/

参数:-R|-r(递归匹配)
eg:
[root@localhost ~]# grep -rl 'root' /etc/

参数:-E(使用拓展正则,等价于egrep)


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

posted on 2021-12-20 23:19  Atopos_q  阅读(20)  评论(0编辑  收藏  举报