Recursively cat all the files into single file
LinuxBashUnixGrepCatLinux Problem Overview
I have bunch of files sitting in folders like
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
I want to cat all the jsons into one single file?
Linux Solutions
Solution 1 - Linux
find data/ -name '*.json' -exec cat {} \; > uber.json
a short explanation:
find <where> \
-name <file_name_pattern> \
-exec <run_cmd_on_every_hit> {} \; \
> <where_to_store>
Solution 2 - Linux
Use find
to get all the JSON files and concatenate them.
find data -name '*.json' -exec cat {} + > all.json
Note that this will not be valid JSON. If you want a JSON file to contain multiple objects, they need to be in a containing array or object, so you'd need to add [ ]
around them and put ,
between each one.
Solution 3 - Linux
Alternatively -- if you have a list of your files -- you can pipe that to xargs
<path to your files> | xargs cat > all.json
Solution 4 - Linux
find ./ -type f | xargs cat > ../singlefilename
I would like this ,easy and simple.
../
avoid the error input file is output file
.