grep查找指定字符

栏目: Linux 发布时间:2022-02-24

前言

今天,我们来一起看一下,在 linux 环境下,如何根据文件内容信息来查找文件

grep 基础用法

使用 grep 在 logs 目录下查找包含“出错了” 3 个字的日志文件

# 编号:1
$ grep '出错了' ./**/*

也可以在指定的单个或多个文件中进行查找:

# 编号:2
$ grep '出错了' ./frontend_api_new/frontend_api_new-web.log.2022-02-23
# 编号:3
grep '出错了' ./frontend_api_new/frontend_api_new-web.log.2022-02-2{2,3}

使用 grep -r 进行递归查找

# 编号:4
$ grep -r '出错了' ./

使用 grep -n 显示匹配内容的行号

# 编号:5
grep -rn '出错了' ./

使用 grep -l 只显示匹配的文件,不展示匹配内容

# 编号:6
$ grep -rl '出错了' ./

使用 grep -L 进行反向查找,查找不含含匹配内容的文件

# 编号:7
$ grep -rL '出错了' ./

使用 grep -c 统计匹配次数

# 编号:8
$ grep -rc '出错了' ./

换个方式验证一下:

# 编号:9
$ cat ./frontend_api_new/frontend_api_new-web.log.2022-02-23 | grep '出错了' | wc -l

使用 grep -v 查找不包含指定内容的文件行内容

# 编号:10
$ grep -v '出错了' ./frontend_api_new/frontend_api_new-web.log
# 编号:11
$ grep -vn '出错了' ./frontend_api_new/frontend_api_new-web.log

grep -i 忽略大小写匹配

# 编号:12
$ grep -i 'Schedule' ./frontend_api_new/frontend_api_new-web.log

搭配 find 命令 进行高级查找

# 编号:13
$ find ./ -mtime -3 -type f | xargs grep '出错了'
# 编号:14
$ find ./ -mtime -3 -type f | xargs grep -l '出错了'

使用 grep 管道符查找

# 编号:15
$ find ./ -name '*.log*' | xargs cat | grep '出错了'
# 编号:16
$ cat $(find ./ -name '*.log*') | grep '出错了'

总结

我们使用 grep 搭配各种参数来查找文件

1、grep -r 递归查找

2、grep -n 搜索内容并显示行号

3、grep -l 只列出匹配的文件名,不展示匹配内容

4、grep -L 只列出不包含搜索内容的文件名,不展示匹配内容

5、grep -c 统计匹配次数

6、grep -v 查找不包含指定内容的文件行

7、grep -i 忽略大小写匹配

另外,对于一些复杂查找,我们可以搭配 find 和 grep 来完成。

本文地址:https://www.tides.cn/p_linux-find-content-by-grep

标签: 文件查找