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

macOS下如何用grep查找同时包含所有指定模式的文件?

在macOS中查找同时包含多模式的日志文件

要实现同时匹配所有指定模式的文件筛选,你需要替换原命令的“逻辑或”逻辑为“逻辑与”,推荐用以下几种简洁的方法:

方法1:多轮grep管道筛选(最直观)

通过管道串联多个grep -l命令,每一步只保留包含当前模式的文件,最终得到同时满足所有条件的文件:

grep -l ',"estadoOperacion":"PP"' ~/Company/logs-delete/pf* | xargs grep -l ',"estadoOperacion":"OX"' | xargs grep -l ',"estadoOperacion":"SPAD"'
  • 直接用~/Company/logs-delete/pf*限定只匹配目录下以pf开头的文件,比递归扫描更高效
  • -l参数只输出匹配到的文件名,作为下一轮grep的输入

方法2:兼容特殊文件名的版本

如果日志文件名包含空格或特殊字符,加上-Z和-0参数避免解析错误:

grep -lZ ',"estadoOperacion":"PP"' ~/Company/logs-delete/pf* | xargs -0 grep -lZ ',"estadoOperacion":"OX"' | xargs -0 grep -l ',"estadoOperacion":"SPAD"'
  • -Z让grep用null字符分隔输出的文件名
  • xargs -0以null字符作为分隔符解析输入,避免特殊字符导致的文件名拆分错误

为什么原命令是“逻辑或”

原命令中grep -RHl -e 模式1 -e 模式2的-e参数是指定多个可选匹配模式,只要文件包含其中任意一个模式就会被选中,因此是“逻辑或”的逻辑。而管道串联的方式是逐步筛选,只有通过所有grep检查的文件才会被保留,实现了“逻辑与”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:15:02