J'ai un tas de fichiers assis dans des dossiers comme
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
Je veux regrouper tous les jsons dans un seul fichier?
find data/ -name '*.json' -exec cat {} \; > uber.json
une courte explication:
find <where> \
-name <file_name_pattern> \
-exec <run_cmd_on_every_hit> {} \; \
> <where_to_store>
Utilisez find
pour obtenir tous les fichiers JSON et les concaténer.
find data -name '*.json' -exec cat {} + > all.json
Notez que ce ne sera pas un code JSON valide. Si vous souhaitez qu'un fichier JSON contienne plusieurs objets, ceux-ci doivent figurer dans un tableau ou un objet contenant des éléments. Vous devez donc ajouter [ ]
autour d'eux et placer ,
entre eux.
Sinon, si vous avez une liste de vos fichiers, vous pouvez le diriger vers xargs
<path to your files> | xargs cat > all.json
trouver ./ -type f | xargs cat> ../singlefilename
Je voudrais ceci, facile et simple.
../ éviter l'erreur "le fichier d'entrée est le fichier de sortie"