如何用yq一行写入多个通配符匹配的YAML文件?
批量修改多个YAML文件的.image.tag值
可以用一行命令批量修改所有匹配development-*.yaml的文件,具体命令取决于你使用的yq版本:
1. mikefarah/yq(v4+,主流版本)
直接用通配符配合原地修改参数即可:
yq '.image.tag = "${{ github.sha }}"' -i development-*.yaml
-i表示原地修改文件,通配符会匹配所有符合命名规则的YAML文件,一次性完成批量修改。
2. kislyuk/yq(Python实现版本)
该版本本身不支持直接通过通配符批量处理文件,需要结合xargs实现:
ls development-*.yaml | xargs yq -yi '.image.tag = "${{ github.sha }}"'
通过ls列出所有目标文件,再用xargs把文件名逐个传递给yq完成修改。
注意事项
- mikefarah/yq v4+版本中
eval参数可以省略,直接写表达式即可; - 在GitHub Actions环境中,建议安装指定版本的yq,避免版本兼容问题。
内容的提问来源于stack exchange,提问作者dev01
相关产品推荐
相关产品推荐

