ho gruppo di file che si siedono in cartelle comericorsive gatto tutti i file in un solo file
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
voglio gatto tutte le jsons in un singolo file?
ho gruppo di file che si siedono in cartelle comericorsive gatto tutti i file in un solo file
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
voglio gatto tutte le jsons in un singolo file?
find data/ -name '*.json' -exec cat {} \; > uber.json
una breve spiegazione:
find <where> \
-name <file_name_pattern> \
-exec <run_cmd_on_every_hit> {} \; \
> <where_to_store>
Senza usare find: 'cat ./data/*/*/*/*.json>./All.json' –
Oppure in' bash' 4 con 'shopt -s globstar',' cat ./data/**/*. json'. – chepner
Dovresti anche aggiungere "-type f" (solo file) per evitare errori quando cat cerca di stampare una directory. –
Usa find
per ottenere tutti i file JSON e concatenare.
find data -name '*.json' -exec cat {} + > all.json
Si noti che questo non sarà valido JSON. Se si desidera che un file JSON contenga più oggetti, è necessario trovarsi in un array o oggetto contenente, quindi è necessario aggiungere [ ]
e inserire ,
tra ciascuno di essi.
alternativa - se si dispone di un elenco dei file - è possibile tubo che a xargs
<path to your files> | xargs cat > all.json
per ottenere una lista in modo ricorsivo: trova \ 'pwd \' – Alan
Il risultato non sarà valido JSON, sei sicuro di volerlo fare? – Barmar