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

如何用jq命令批量处理GUID命名JSON文件并合并为清单文件

用jq批量处理JSON文件并合并为数组

没问题,用jq一行命令就能搞定你的需求!这里分两种场景给你解决方案,适配不同的文件命名情况:

基础版本(文件名无空格/特殊字符)

如果你的.json文件名都是纯GUID格式、没有空格或特殊字符,直接用这条命令:

jq -n '[inputs | .CaseId = input_filename | .CaseId |= rtrimstr(".json")]' *.json > combined.json

命令拆解:

  • -n:让jq从空状态启动,确保我们能手动构建最终的数组结构
  • [inputs ...]:把所有输入的JSON对象收集到一个大数组中
  • .CaseId = input_filename:为每个JSON对象添加CaseId字段,值为当前处理的完整文件名(比如43d47f66-5a0a-4b86-88d6-1f1f893098d2.json)
  • .CaseId |= rtrimstr(".json"):去掉CaseId值末尾的.json后缀,得到纯GUID字符串
  • *.json:匹配当前目录下所有.json文件
  • > combined.json:将最终结果输出到combined.json文件中

稳健版本(文件名含空格/特殊字符)

如果文件名可能包含空格或特殊字符,用find配合jq更稳妥:

find . -maxdepth 1 -type f -name "*.json" -exec jq -n --argfile f {} '$f | .CaseId = ($f|input_filename|rtrimstr(".json"))' \; | jq -s . > combined.json

效果验证

假设你有一个43d47f66-5a0a-4b86-88d6-1f1f893098d2.json文件,内容为:

{"Active": true, "CaseType": "CaseType", "CustomerGroup": ["Core", "Extended"]}

处理后,combined.json里对应的元素会是:

{
  "Active": true,
  "CaseType": "CaseType",
  "CustomerGroup": ["Core", "Extended"],
  "CaseId": "43d47f66-5a0a-4b86-88d6-1f1f893098d2"
}

所有文件的处理结果会被包裹在一个顶层数组里,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:12:31