Linux中用grep递归查找代码敏感词需加-r选项,配合-i、-w、--include、--exclude-dir等提升准确性和效率,支持正则匹配和去重输出。

Linux 中用 grep 递归查找代码里的敏感词,核心是加 -r(或 --recursive)选项,并配合常用过滤手段提升准确性和效率。
基础递归搜索命令
在当前目录及其所有子目录中搜索包含“password”的文件:
grep -r "password" .
说明:
- -r 表示递归进入子目录
- . 表示从当前目录开始
- 默认会输出匹配行及所在文件路径(格式:文件名:匹配内容)
提高查准率的实用选项
纯文本匹配容易误报(比如搜“key”可能命中“apikey”“keyword”),建议组合使用:
-
-i:忽略大小写,如grep -ri "apikey" . -
-w:匹配整个单词,避免子串干扰,如grep -rwi "secret" .不会匹配 “secrets” 或 “secretly” -
--include="*.py":只搜索指定后缀文件,适合代码场景,如grep -r --include="*.js" "token" ./src/ -
--exclude-dir={node_modules,.git}:跳过无关目录,加快速度并减少噪音
快速定位敏感词位置并去重显示
只想知道哪些文件含敏感词,不关心具体哪一行:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
grep -rl --include="*.go" "os.Getenv" . | sort -u
说明:
- -l 只输出匹配的文件名(不显示行内容)
- sort -u 去重,避免同一文件因多处匹配重复出现
- 可替换为 grep -rI(-I 自动跳过二进制文件,防止乱码干扰)
结合正则精准匹配常见敏感模式
例如查找硬编码的 API 密钥(类似 API_KEY = "xxx" 或 secret: "xxx"):
grep -rE "(API[_-]?KEY|SECRET|TOKEN)[[:space:]]*[:=][[:space:]]*["\']" --include="*.py" --include="*.js" --include="*.yml" .
关键点:
- -E 启用扩展正则
- [[:space:]]* 匹配任意空白(空格、制表符等)
- ["\'] 匹配单引号或双引号,覆盖常见字符串包裹方式
- 多个 --include 可叠加,限定扫描范围
不复杂但容易忽略细节,合理组合选项就能高效扫出代码中的风险点。

















