2017-12-28 28 views
0

Ich habe mehrere unformatierte JSON-Dateien, die ich gerne "verschönern" würde, damit sie besser lesbar sind. Die Art, wie ich tue es in der Regel für eine einzelne Datei ist:Wie kann ich mehrere Dateien json-formatieren und überschreiben?

python -m json.tool <infile> outfile 

Aber für mehrere Dateien, die ich habe einen Weg gefunden, sie zu verarbeiten und die gleiche Datei mit der neuen „ziemlich“ json außer Kraft setzen.

Der nächstgelegene ich bekam, war:

find ./ -type f -exec python -m json.tool {} \; 

Aber es druckt alles auf die Standardausgabe, was in Ordnung ist, aber nicht optimal, je nachdem wie viele Dateien Sie suchen auf. Gibt es eine Möglichkeit, den obigen Befehl die Dateien mit dem verschönerten JSON überschreiben?

Dateien werden genannt: message1.json, message2.json und so weiter ...

Vielen Dank im Voraus

+0

Siehe unter https://Stackoverflow.com/q/12965400/4886927 (ersetzen Sie den "Schnitt" -Befehl von Ihrem pyhton) –

+0

@pasabaporaqui: Ich bin mir nicht sicher, ich würde es eine genaue Betrüger nennen, ich bin nicht sicher, ob OP möchte, dass seine Dateinamenerweiterung geändert wird. Wäre nützlich, wenn sie mehr Informationen zur Verfügung stellen – Inian

+0

@ Israel: Können Sie uns einige tatsächliche Dateinamen und Dateiinhalte geben? Möchten Sie auch, dass die Erweiterung von der ursprünglichen Datei in den neuen JSON geändert wird? Oder haben Sie den gleichen Namen – Inian

Antwort

1

Versuchen mit:

find . -type f -exec sh -c 'python -m json.tool $0 > $0.pretty' {} \; 

bei https://stackoverflow.com/a/12965441/4886927 siehe ausführliche Erläuterung

Auf diese Weise wird die Originaldatei mit einer neuen überschrieben:

find . -type f -exec sh -c 'python -m json.tool < $0 > /tmp/pretty.json && mv /tmp/pretty.json $0' \; 
+0

Gibt es eine Möglichkeit, dieselbe Erweiterung beizubehalten? – israelord

+0

@ Israel: Antwort aktualisiert –

Verwandte Themen