凡事都在事上磨,这样才能精进,成长进步提高! ------ 博客园首页

grep 使用

果您想指定只在某两个(或多个)特定文件中查找某个关键字,直接在 grep 命令的最后依次列出这两个文件的路径即可,不需要加 -r(递归)参数。
以下是具体的命令写法和高频实用场景:
🧱 1. 最基础写法:直接列出文件名
bash
# 语法:grep "关键字" 文件1 文件2
grep "getCalcCPUThreadPoolExecutor" MyService.java ThreadPoolConfig.java
请谨慎使用此类代码。
💡 提示:如果文件包含匹配项,grep 会自动在每行开头打印出文件名,方便你区分。

🔍 2. 实用进阶组合(强烈建议加上)
在实际排查代码时,建议加上 -n(显示行号)和 --color(关键字高亮),这样在终端里看得最清楚:
bash
# -n 会精准显示关键字在文件中的第几行
grep -n --color "processCalc" src/main/ServiceA.java src/main/ServiceB.java
请谨慎使用此类代码。

🔀 3. 各种灵活变通的场景
场景 A:文件在不同的目录下
如果这两个文件不在同一个文件夹里,直接写出各自的相对路径或绝对路径:
bash
grep -n "utilizationCalc" ./config/AppConfig.yml ./src/main/MyTask.java
请谨慎使用此类代码。
场景 B:查找同一个目录下、名字很像的两个文件(利用大括号 {}
如果两个文件在同一个目录下,比如 UserService.javaOrderService.java,可以使用大括号进行缩写:
bash
grep -n "Autowired" src/main/java/com/xxx/{User,Order}Service.java
请谨慎使用此类代码。
场景 C:忽略大小写查找
如果你不确定关键字是大写还是小写,加上 -i
bash
grep -in "completablefuture" file1.java file2.java
请谨慎使用此类代码。

💡 Windows CMD 原生替代方案
如果你当前使用的是 Windows 原生的 CMD 命令行,可以使用 findstr 同样直接列出多个文件:
cmd
# /N 代表显示行号,最后用空格隔开多个文件
findstr /N "processCalc" ServiceA.java ServiceB.java
请谨慎使用此类代码。

如果通过这两个文件的对比,你成功锁定了之前多线程或网络超时的核心配置,接下来如果需要:
  • 了解如何通过 Linux 管道符(|) 对 grep 的结果做二次过滤?
  • 或者需要针对这两个文件中的代码进行高并发安全性审查?
posted @ 2026-07-20 09:40  追风fc  阅读(14)  评论(0)    收藏  举报