find,正则表达式和grep

内容概要

  • find
  • 正则表达式
  • linux三剑客之grep

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

find,正则表达式和grep

上一篇:Linux中find命令与三剑客之grep和正则


下一篇:linux grep