grep -r 是最常用且稳妥的递归搜索命令,支持忽略大小写(-i)、显示行号(-n)、仅列出文件名(-l)、高亮关键词(--color=always),并可通过 --exclude 和 --exclude-dir 排除指定文件或目录,结合 -e 可启用扩展正则表达式进行精准匹配。

用 grep -r 就能直接递归搜索目录里的文本,这是最常用也最稳妥的方式。
基础递归搜索
只需加 -r(或 -R)选项,后面跟上要查的字符串和目标目录:
-
grep -r "error" /var/log/:在/var/log/及其所有子目录中查找含error的行 -
grep -r "API_KEY" ./src:在当前目录下的src文件夹里逐层搜索
它自动跳过二进制文件,避免乱码干扰;路径含空格也不出错,比 find | xargs grep 更可靠。
常用组合提升效率
单用 -r 往往不够,搭配几个选项更实用:
宝塔Linux面板11.8.1为官网当前正式版,新增AI建站能力并经过宝塔网站工程师深度调教,开放自定义AI功能API,同时对WAF进行界面重构和深度优化,提升拦截能力与运维效率。
-
-i:忽略大小写,比如grep -ri "warning" .能匹配Warning、WARNING -
-n:显示行号,方便快速定位,如grep -rn "TODO" ./ -
-l:只列出含匹配内容的文件名,不输出具体行,适合先缩小范围 -
--color=always:强制高亮关键词,终端支持时一眼就能扫到重点
排除不需要的文件或目录
搜索时经常想跳过某些类型,可用这些参数:
-
--exclude="*.log":跳过所有.log文件 -
--exclude-dir="node_modules":不进入node_modules目录(对前端项目很关键) -
--exclude-dir=".git":避开 Git 元数据,加快速度又避免误报
多个排除可连写,比如 grep -r --exclude-dir=".git" --exclude-dir="build" "main" .
配合正则表达式精准匹配
加 -E 启用扩展正则,能处理更复杂的需求:
-
grep -rE "^(DEBUG|INFO)" /var/log/:找以DEBUG或INFO开头的日志行 -
grep -rE "\buser_id=[0-9]+\b" ./:匹配完整的user_id=123这类字段,\b保证是单词边界
注意点:正则中的特殊字符如 .、*、? 需要转义,或者用 -F 当作纯字符串处理。










