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.java 和 OrderService.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的结果做二次过滤? - 或者需要针对这两个文件中的代码进行高并发安全性审查?
因为相信,所以看见.

浙公网安备 33010602011771号