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

macOS下如何使用grep在多份tomcat访问日志中匹配多个关键词

解决方案

你原先的命令无法生效的核心原因是:默认状态下grep不会将目录作为扫描对象,你传入.作为路径时,grep只会把目录当成普通单个文件处理,无法遍历目录下的所有日志文件。

以下是适配macOS系统的可行实现方法:

方法1:通配符匹配(日志全部存放在当前目录、无嵌套子目录)

如果所有日志文件都直接放在当前目录下,没有嵌套子目录,直接用通配符指定所有日志文件即可,假设你的日志后缀为.log:

grep "/context" *.log | grep "\.com"

注:将.com的点转义为\.com是为了避免正则匹配到任意字符,防止出现xcom这类不符合预期的误匹配结果


方法2:递归扫描(日志存放在嵌套子目录/需要遍历所有层级文件)

如果日志有嵌套存放的情况,加上-r参数开启递归扫描即可,还可以通过--include参数限定仅扫描日志格式的文件,提升扫描效率:

grep -r --include="*.log" "/context" . | grep "\.com"

如果需要一步完成匹配避免二次管道,可以直接用正则同时匹配两个条件:

grep -r --include="*.log" "/context.*\.com\|\.com.*/context" .

方法3:配合find命令(需要更复杂的文件过滤规则)

如果需要对文件的修改时间、大小等属性做额外过滤,可以用find+exec的组合实现:

find ./ -type f -name "*.log" -exec grep "/context" {} + | grep "\.com"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:39:05