直接用grep -r可递归搜索多级目录下所有文件,配合-i(忽略大小写)、-n(显示行号)、--exclude-dir(跳过无关目录)、--include(限定文件类型)、-e(正则匹配)等选项,能高效精准定位含敏感关键字的文件行,并需人工复核避免误报。

直接用 grep -r(即 grep --recursive)就能递归搜索多级目录下所有文件,配合合理选项可高效定位含敏感密码的文件。
用 grep -r 递归扫描整个目录树
默认情况下,grep -r 会自动进入子目录逐层查找,无需手动展开路径。例如:
-
grep -r "password" /path/to/project/—— 搜索所有含 "password" 的行 -
grep -r -i "passwd\|pwd\|secret\|token" /path/to/dir—— 不区分大小写,匹配多个关键词
排除干扰文件,提升准确性和速度
源码仓库常含 node_modules、.git、build 等无关目录,跳过它们能大幅提速并减少误报:
grep -r --exclude-dir={node_modules,.git,venv,__pycache__} "password" .-
grep -r --include="*.py" --include="*.js" --include="*.env" "SECRET_KEY" .—— 只查指定后缀文件
增强匹配精度,避免漏检或误报
单纯字符串匹配容易漏掉变体(如空格、引号、赋值符),建议组合使用:
-
grep -r -E '["'\''].*[Pp][Aa][Ss][Ss][Ww][Oo][Rr][Dd].*["'\'']' .—— 匹配带引号的 password 字段 -
grep -r -n -A2 -B2 'password[:=]' .—— 显示匹配行及上下文,方便人工确认 -
grep -r -l "password" . | xargs -r grep -l "123456\|admin\|test123"—— 先筛出含 password 的文件,再二次过滤弱口令
安全提示:别把密码当明文搜,而要建立防护习惯
grep 找到的只是“已泄露”的痕迹。真正关键的是预防:
- 禁止在代码、配置文件、日志中硬编码密码
- 用环境变量或密钥管理服务(如 HashiCorp Vault、AWS Secrets Manager)替代明文
- 在 .gitignore 中加入 *.env、config.local.php 等敏感文件
- CI/CD 流程中集成
git-secrets或truffleHog自动扫描提交内容
不复杂但容易忽略。











