grep -r 可递归搜索目录中含指定文本的行,支持 -l(仅文件名)、-n(行号)、-i(忽略大小写)等选项,并可通过 --include/--exclude-dir 精准筛选文件类型或排除目录,结合 find 实现复杂条件过滤,配合 -e 使用扩展正则匹配复杂模式。

直接用 grep -r 就能快速定位——它递归扫描目录下所有文件,找出含指定文本的行。
基础递归搜索
最常用写法:
-
grep -r "关键词" /路径/:比如
grep -r "timeout" /var/log/扫描整个日志目录 - 加 -l 只显示文件名:
grep -rl "error" ./src/,适合快速列出哪些文件含该内容 - 加 -n 显示行号:
grep -rn "return" *.c,方便定位代码位置 - 加 -i 忽略大小写:
grep -ri "config" /etc/
按文件类型精准筛选
避免遍历无关文件,提升速度和结果准确性:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 只查 Python 文件:
grep -rn --include="*.py" "import requests" . - 只查配置类文件:
grep -rn --include="*.conf" --include="*.yaml" "port:" /etc/ - 排除虚拟环境或构建目录:
grep -rn --exclude-dir="venv" --exclude-dir="build" "DEBUG" .
结合 find 灵活控制条件
当需要更复杂的过滤逻辑(如按修改时间、权限、多后缀)时,先用 find 筛文件再交给 grep:
- 查最近 1 天内修改过的 .log 文件中含 “fail” 的行:
find /var/log -name "*.log" -mtime -1 | xargs grep "fail" - 查所有普通文件(不含目录/设备),并跳过二进制文件:
find /opt -type f -print0 | xargs -0 grep -l "version" - 安全起见,用
-print0和xargs -0处理含空格或特殊字符的路径
用正则表达式匹配复杂模式
加 -E 启用扩展正则,支持更精确的文本结构识别:
- 找邮箱地址:
grep -rE "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b" ~/docs/ - 找以 # 开头的注释行:
grep -rE "^#" /project/*.sh - 找结尾是分号的函数调用:
grep -rE "[a-zA-Z_]\w*\([^)]*\);" ./src/










