Рекурсивные кошки все файлы в один файл

У меня есть куча файлов, сидящих в папках, таких как

data\A\A\A\json1.json
data\A\A\A\json2.json
data\A\A\B\json1.json
...
data\Z\Z\Z\json_x.json

Я хочу котать все jsons в один файл?

Ответ 1

find data/ -name '*.json' -exec cat {} \; > uber.json

краткое объяснение:

find <where> \
  -name <file_name_pattern> \
  -exec <run_cmd_on_every_hit> {} \; \
    > <where_to_store>

Ответ 2

Используйте find чтобы получить все файлы JSON и объединить их.

find data -name '*.json' -exec cat {} + > all.json

Обратите внимание, что это недействительно JSON. Если вы хотите JSON - файл содержат несколько объектов, они должны быть в вмещающем массиве или объекте, так что вам нужно добавить [ ] вокруг них и положить , между каждым из них.

Ответ 3

Альтернативно - если у вас есть список ваших файлов, вы можете xargs это на xargs

<path to your files> | xargs cat > all.json

Ответ 4

find ./ -type f | xargs cat > ../singlefilename

Я хотел бы это, легко и просто.

../ избежание ошибки input file is output file.