Ich habe eine Reihe von Dateien in Ordnern wie
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
Ich möchte alle Jsons in einer einzigen Datei zusammenfassen?
find data/ -name '*.json' -exec cat {} \; > uber.json
eine kurze erklärung:
find <where> \
-name <file_name_pattern> \
-exec <run_cmd_on_every_hit> {} \; \
> <where_to_store>
Verwenden Sie find
, um alle JSON-Dateien abzurufen und diese zu verketten.
find data -name '*.json' -exec cat {} + > all.json
Beachten Sie, dass dies kein gültiger JSON ist. Wenn Sie möchten, dass eine JSON-Datei mehrere Objekte enthält, müssen diese sich in einem enthaltenden Array oder Objekt befinden. Sie müssen also [ ]
hinzufügen und ,
zwischen die einzelnen Objekte setzen.
Alternativ - wenn Sie eine Liste Ihrer Dateien haben - können Sie diese an xargs
weiterleiten.
<path to your files> | xargs cat > all.json
find ./-typ f | xargs cat> ../singlefilename
Ich möchte das einfach und unkompliziert.
../ vermeiden den Fehler "Eingabedatei ist Ausgabedatei"