递归地将所有文件分成单个文件

我有一堆文件放在文件夹里

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 归到一个档案里?

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

一个简短的解释:

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

使用 find获取所有 JSON 文件并连接它们。

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

注意,这将不是有效的 JSON。如果您希望一个 JSON 文件包含多个对象,那么它们需要位于一个包含数组或对象中,因此您需要在它们周围添加 [ ],并在每个对象之间放置 ,

或者——如果您有一个文件列表——您可以通过管道将其发送到 xargs

<path to your files> | xargs cat > all.json
find ./ -type f | xargs cat > ../singlefilename

我喜欢这样,简单明了。

避免错误 input file is output file