私の周りに一つあります。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回だけ実行します。この仮想配列の各要素を実行し、数値配列を返し、最後に合計するために使用されます。jq
map
length
add
また、コマンドラインの長さの制限に達していないことを確認してください(ただし、この場合はサブディレクトリ1のファイルも再帰的に処理されます)。
find . -name "*.json" -exec jq 'length' {} + | jq -s 'add'
見つかったファイルはバッチに渡され、jq 'length'
サイズはシステムが許可するコマンドラインの最大長によって異なります。入力を吸い込むと何度もfind
実行でき、jq
出力が2番目にパイプされる可能性があるため、安定して動作しませんjq
。
1このサイトの複数のQ&Aは、 ディレクトリに入るのを防ぐ方法を示しています。find
非再帰的に「検索」を使用しますか?