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

MacBook Zsh环境下如何编译文件名不含_server的Proto文件?

在Mac上编译不含"_server"的Proto文件

Zsh(Mac默认Shell)

  • 先确认Zsh的扩展glob功能开启(默认已开启,若没开执行这条命令):
    setopt extendedglob
  • 执行编译命令:
    protoc --dart_out=grpc:proto/ ./api/(core|editor|google)/**/^*(_server).proto --proto_path=./api
    这里的^*(_server)是Zsh的扩展匹配语法,专门用来排除包含_server字符串的文件名,**会递归遍历目标文件夹下的所有子目录。

Bash(如果你用的是Bash)

  • 先开启Bash的扩展glob和递归匹配支持:
    shopt -s extglob globstar
  • 执行编译命令:
    protoc --dart_out=grpc:proto/ ./api/{core,editor,google}/**/!(*_server).proto --proto_path=./api
    其中!(*_server)是Bash的扩展语法,作用是排除所有文件名里带_server的文件,globstar让**能递归遍历子目录。

关于Linux上[^_server]写法的问题

你同事用的[^_server]其实是个误区——它是单个字符的否定匹配,只会排除文件名里包含_、s、e、r、v这些单个字符的文件,根本不是排除整个_server字符串。这种写法只是碰巧在某些场景下看起来有效,本质是错误的,所以在Mac上自然不管用。

内容的提问来源于stack exchange,提问作者anonymous-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:05:21