Mam kilka plików w folderach siedzą jakrekurencyjne cat wszystkie pliki w jednym pliku
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
chcę kota wszystkie jsons w jeden plik?
Mam kilka plików w folderach siedzą jakrekurencyjne cat wszystkie pliki w jednym pliku
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
chcę kota wszystkie jsons w jeden plik?
find data/ -name '*.json' -exec cat {} \; > uber.json
krótkie wyjaśnienie:
find <where> \
-name <file_name_pattern> \
-exec <run_cmd_on_every_hit> {} \; \
> <where_to_store>
Bez użycia find: 'cat ./data/*/*/*/*.json> ./ all.json' –
Lub w' bash' 4 z 'shopt -s globstar',' cat ./data/**/*. json'. – chepner
Powinieneś także dodać "-type f" (tylko pliki), aby uniknąć błędów, gdy kot próbuje wydrukować katalog. –
Zastosowanie find
uzyskać wszystkie pliki JSON i złączyć je.
find data -name '*.json' -exec cat {} + > all.json
Należy pamiętać, że nie będzie to poprawne JSON. Jeśli chcesz, aby plik JSON zawierał wiele obiektów, muszą one znajdować się w tablicy lub obiekcie zawierającym obiekt, dlatego musisz dodać do nich [ ]
i umieścić między nimi .
Alternatywnie - jeśli masz listę plików - można rura że do xargs
<path to your files> | xargs cat > all.json
, aby uzyskać listę rekurencyjnie: znajdź \ 'pwd \ ' – Alan
Wynik nie będzie ważne JSON, jesteś pewien, że chcesz to zrobić? – Barmar