将所有文件递归到单个文件中

时间:2014-06-05 19:57:50

标签: linux bash unix grep cat

我有一堆文件就像

这样的文件夹
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都放到一个文件中?

4 个答案:

答案 0 :(得分:83)

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

一个简短的解释:

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

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:10)

或者 - 如果您有一个文件列表 - 可以将其传递给xargs

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

答案 3 :(得分:2)

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

我想要这个,简单而简单。

../避免出现错误input file is output file