grep -r 是 linux 下递归搜索目录及其子目录中含指定关键字文件行的最常用命令,支持 -n、-i、--include、--exclude-dir、-l 等增强选项,并可结合管道与 wc、head、--color 等提升效率。

用 grep -r(或 grep -R)可以递归搜索目录及其子目录中所有包含指定关键字的文件行,这是 Linux 下最常用、最直接的方式。
基础用法:搜索关键字并显示匹配行
命令格式为:
grep -r "关键字" 目录路径
例如,在当前目录下搜索所有含 error 的行:
grep -r "error" ./
输出会显示匹配行所在的文件路径和具体内容,如:./logs/app.log:error occurred at line 123
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
常用增强选项(提升实用性)
实际使用中常搭配以下选项:
-
-n:显示匹配行的行号,方便定位 -
-i:忽略大小写(如匹配Error、ERROR) -
--include="*.py":只搜索指定扩展名的文件(支持通配符) -
--exclude-dir="node_modules":跳过特定子目录(避免搜索大型无关目录) -
-l:只列出含匹配内容的文件名,不显示具体行(适合快速找哪些文件有该关键字)
示例:在 src/ 下搜索忽略大小写的 TODO,仅限 .js 和 .ts 文件,跳过 build 目录:
grep -rni --include="*.js" --include="*.ts" --exclude-dir="build" "TODO" src/
处理特殊字符与正则表达式
如果关键字含正则元字符(如 .、*、[),需转义或加引号防止 shell 解析错误:
- 搜索字面量
config.js(不是正则):用双引号包裹,确保原样匹配 - 搜索含点号的字符串(如
file.txt):写成"file\.txt"或用-F(固定字符串模式)更安全 - 启用正则功能:默认即支持,但若要精确控制,可加
-E(扩展正则)或-F(禁用正则,按字面匹配)
推荐对普通关键字始终用双引号包裹,避免意外分词或变量展开。
配合其他命令提高效率
grep -r 输出可管道传递给其他工具:
- 统计匹配行总数:
grep -r "keyword" . | wc -l - 只看前 10 行结果:
grep -r "keyword" . | head -10 - 高亮关键字(终端支持时):
grep -r --color=always "keyword" . - 排除二进制文件(避免乱码干扰):
grep -r --binary-files=without-match "keyword" .










