it-swarm.com.de

Rekursive cat alle Dateien in eine einzige Datei

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?

38
Fraz
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>
76
Pavel

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.

10
Barmar

Alternativ - wenn Sie eine Liste Ihrer Dateien haben - können Sie diese an xargs weiterleiten.

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

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

Ich möchte das einfach und unkompliziert.

../ vermeiden den Fehler "Eingabedatei ist Ausgabedatei"

1
LuciferJack