Linux中用grep递归查找多个目录下的错误日志,需组合-r、-n、-i等选项,支持多路径、正则匹配(error|exception|fail)、--include/--exclude-dir过滤、--binary-files跳过二进制文件,并可高亮、统计、排序及管道精简输出。

Linux 中用 grep 递归查找多个目录下的错误日志,核心是组合 -r(递归)、-n(显示行号)、-i(忽略大小写)等选项,并用正则或多个关键词匹配“错误”相关内容。
指定多个目录直接递归搜索
不需要进入每个目录分别执行,grep -r 支持一次传入多个路径:
grep -r -n -i "error\|exception\|fail" /var/log/ /home/app/logs/ /opt/service/logs/-
error\|exception\|fail是基本的错误关键词正则,\|表示“或”,需加反斜杠转义(在基础正则中) - 如果使用
grep -E(扩展正则),可写成:grep -r -n -i -E "error|exception|fail" 目录1 目录2,更简洁
只匹配日志文件,避免扫描二进制或大文件
日志通常为文本文件(如 .log、.out、无后缀),加 --include 限定范围:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
grep -r -n -i --include="*.log" --include="*.out" --include="*.txt" "error" /var/log/ /app/logs/- 也可排除干扰项:
--exclude-dir=".git" --exclude-dir="cache"跳过特定子目录 - 加
--binary-files=without-match防止报错或卡住(跳过无法解析的二进制文件)
高亮匹配内容并统计出现次数
便于快速定位和评估问题严重性:
- 加
--color=always让错误词高亮(终端支持时生效) - 加
-c统计每个文件中匹配行数:grep -r -c -i "error" /var/log/ - 想看哪些文件含错误且至少出现一次:
grep -r -l -i "error" /var/log/(-l只输出文件名)
结合管道进一步过滤或排序
搜索结果太多时,可用管道精简输出:
- 按匹配次数从高到低排序:
grep -r -c -i "error" /var/log/ | sort -t: -k2,2nr - 只看最近 10 行错误(配合
tail):grep -r -n -i "error" /var/log/ | tail -10 - 提取文件名+行号+内容,格式统一:
grep -r -n -i "error" /var/log/ | awk -F: '{print $1":"$2"\t"$0}' | cut -d':' -f1-2,4-

















