You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用grep查找同时包含两个指定关键词的所有文件?

查找同时包含两个关键词的文件问题解决

你当前使用的命令grep -r "patern1|patern2" /path/to/directory会匹配包含任意一个关键词的文件——因为|在基础正则中是普通字符,即便加-E启用扩展正则,逻辑也是“或”,完全不符合你要找同时包含两个关键词的需求。

以下是几种正确的实现方式:

方法一:两次grep组合(通用兼容)

先筛选出包含第一个关键词的文件,再从中过滤出包含第二个关键词的文件,用-l参数只输出文件名:

grep -rl "patern1" /path/to/directory | xargs grep -l "patern2"

如果你的文件名包含空格,建议加-Z和-0参数避免解析错误:

grep -rlZ "patern1" /path/to/directory | xargs -0 grep -l "patern2"

方法二:单条grep命令(GNU grep适用)

利用正向预查实现“同时满足两个条件”,(?s)让.匹配换行符,确保跨多行的内容也能被检测到:

grep -rE "(?s)^(?=.*patern1)(?=.*patern2)" /path/to/directory -l

注意:如果是拼写失误(你写的patern应为pattern),记得修正关键词里的拼写。

内容的提问来源于stack exchange,提问作者user3070752

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:06:25