Jq
如何使用 jq 對目錄內文件中的 JSON 元素的數量求和
我在一個目錄中有大約3K JSON 文件,每個文件在其中包含大約 250 **(+/-)**個JSON 元素,我想將這些文件中的 JSON 元素的總數計算為總和。
目前使用
jq
如下命令返回每行中的數字,但我想通過添加它們來計算總數,jq length *.json
電流輸出,
250 248 250 240 ... ... 250
預期輸出(大約),
600530
僅使用
jq
:jq -s 'map(length) | add' ./*.json
-s
/--slurp
將jq
其輸入作為單個數組讀取,僅對它執行一次指定的過濾器。map
用於執行length
該虛擬數組的每個元素,返回一個數字數組,add
最後將它們相加。還要確保不達到命令行長度限制(但請注意,這也會遞歸處理子目錄1中的文件):
find . -name "*.json" -exec jq 'length' {} + | jq -s 'add'
找到的文件
jq 'length'
分批傳遞,其大小取決於系統允許的最大命令行長度。由於find
可能會執行jq
不止一次,因此使其輸入無法可靠地工作,而是將其輸出通過管道傳輸到第二個(slurping)jq
。1 本站的幾個Q/A 展示瞭如何防止
find
進入目錄;例如,以非遞歸方式使用“查找”?