grep -r 是递归搜索目录中含特定词文件的最常用可靠方式,支持 -l 显示文件名、--include 限定类型、-i 忽略大小写、-I 跳过二进制文件、--exclude-dir 排除目录等参数,并可结合管道统计或排序。

直接用 grep -r(注意是小写 r,不是大写 R)就能递归搜索目录中含特定词的文件。这是最常用也最可靠的方式。
基础用法:搜关键词并显示匹配行
命令格式很简单:
grep -r "关键词" 目录路径
例如,在当前目录下搜索所有包含 error 的文件:
grep -r "error" ./
它会输出类似这样的结果:
./logs/app.log:error occurred while connecting
./config.ini:debug_mode = false
只显示匹配的文件名(不显示具体内容)
加 -l 参数即可,适合快速定位哪些文件含关键词:
-
grep -rl "TODO" ./src/→ 列出 src 目录下所有含 TODO 的文件名 - 配合
--include可限定文件类型,比如只查 .py 文件:grep -rl "print" ./ --include="*.py"
忽略大小写、跳过二进制文件等实用选项
日常使用中这几个参数很常用:
-
-i:忽略大小写,grep -ri "error" ./会匹配 Error、ERROR、error -
--binary-files=without-match:跳过二进制文件(避免乱码或卡住),可简写为-I -
--exclude-dir:排除某些目录,比如跳过 node_modules:grep -r "api" . --exclude-dir=node_modules
结合管道做进一步处理
如果想统计有多少个文件匹配,或者排序查看:
- 统计匹配文件数:
grep -rl "FIXME" . | wc -l - 按文件名排序后显示:
grep -rl "import" ./ | sort - 高亮关键词(终端支持时):
grep -r --color=always "warning" ./ | less -R











