jqを使用してディレクトリ内のドキュメント内のJSON要素の数の合計を見つける方法

jqを使用してディレクトリ内のドキュメント内のJSON要素の数の合計を見つける方法

私の周りに一つあります。3Kそれぞれ約250個のディレクトリのJSONファイル(+/-)JSON要素のうち、そのファイル内のJSON要素の総数の合計を計算したいと思います。

現在、jq各行の数値を返す以下のコマンドを使用していますが、これを追加して合計を計算したいと思います。

jq length *.json

電流出力

250
248
250
240
...
...
250

期待される出力(について)、

600530

ベストアンサー1

以下のみを使用してくださいjq

jq -s 'map(length) | add' ./*.json

-s/入力を1つの配列に--slurp読み込み、指定されたフィルタを1回だけ実行します。この仮想配列の各要素を実行し、数値配列を返し、最後に合計するために使用されます。jqmaplengthadd

また、コマンドラインの長さの制限に達していないことを確認してください(ただし、この場合はサブディレクトリ1のファイルも再帰的に処理されます)。

find . -name "*.json" -exec jq 'length' {} + | jq -s 'add'

見つかったファイルはバッチに渡され、jq 'length'サイズはシステムが許可するコマンドラインの最大長によって異なります。入力を吸い込むと何度もfind実行でき、jq出力が2番目にパイプされる可能性があるため、安定して動作しませんjq


1このサイトの複数のQ&Aは、 ディレクトリに入るのを防ぐ方法を示しています。find非再帰的に「検索」を使用しますか?

おすすめ記事