Это можно сделать, вызвав jq
два раза так:
jq -c '.[]' *.json | jq -s
Как это работает
*.json
оценивается оболочкой и заменяется списком соответствий файлы. jq
получает имена всех JSON файлов в текущем каталоге в качестве аргументов. Он читает их один за другим и запускает программу .[]
на JSON-файлах, которые они содержат.
Каждый файл JSON содержит массив. .[]
извлекает элементы из массива и выводит их.
-c
говорит jq
выводить каждое значение (элементы, извлеченные с помощью .[]
) в одну строку.
Вывод первая команда jq
состоит из одной строки для каждого объекта из массивов, хранящихся во входных файлах.
Этот вывод затем передается второй команде jq
, чей аргумент -s
указывает ей прочитать все (обычно он читает по одному JSON за один раз) и помещает все объекты, которые он декодирует из входных JSON, в массив. Это именно то, что вы хотите.