在目录中查找所有JSONS文件并将其组合到bash中的数组中

时间:2018-11-19 08:01:10

标签: linux bash find command

我想找到所有json文件文件的特定目录,并将其合并到一个包含所有结果数据的父结果中

我正在尝试

NullPointerExcetion

它正在查找所有数据,但是将其路径保存在result.json中,如何获取所有文件中的数据并获取所有结果的组合JSON

此命令将保存一个如下所示的 result.json 文件

 find .  -name *data.json | tee result.json

2 个答案:

答案 0 :(得分:1)

您需要cat每个文件,而不输出其名称。您还需要在每个json之前输出逗号(第一个除外),并在其中加上方括号:

#! /bin/bash
printf [
separator=""
find . -name '*data.json' -print0 | while IFS= read -d '' -r j ; do
    printf $separator
    separator=,
    cat "$j"
done
printf ]

答案 1 :(得分:0)

此命令将搜索当前文件夹和子文件夹中的所有data * .json文件,并将它们组合为results.json(array)

find . -name data\*.json -type f | xargs cat | sed -e s/}/},/g -e \$s/,\$/]/ -e 1s/^/[/ > results.json

我已经使用以下命令进行了基本测试

echo {\"name\":\"Alex\", age:24, city:\"Tokyo\"} > sample.json

for i in {1..10} ; do cp sample.json data$i.json ; done

find . -name data\*.json -type f | xargs cat | sed -e s/}/},/g -e \$s/,\$/]/ -e 1s/^/[/ > results.json

如果您发现它不适用于特定情况,我将尝试修复它。但是到目前为止,它不适用于嵌套的json或带有数组的json。