web-dev-qa-db-fra.com

Chat récursif tous les fichiers en un seul fichier

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?

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

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.

10
Barmar

Sinon, si vous avez une liste de vos fichiers, vous pouvez le diriger vers xargs

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

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"

1
LuciferJack