![如何找到一组找到的文件的总行数(使用 Linux 命令行工具)?](https://linux22.com/image/519913/%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E4%B8%80%E7%BB%84%E6%89%BE%E5%88%B0%E7%9A%84%E6%96%87%E4%BB%B6%E7%9A%84%E6%80%BB%E8%A1%8C%E6%95%B0%EF%BC%88%E4%BD%BF%E7%94%A8%20Linux%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7%EF%BC%89%EF%BC%9F.png)
我可以使用以下方法找到与特定模式匹配的每个文件的行数(例如):
$ find . -name "test.save*" -exec wc -l {} \;
673000 ./test.save8.txt
24000 ./from/test1/test.save3.txt
100 ./from/test1/test.save1.txt
513000 ./from/test1/test.save2.txt
2253000 ./from/test1/test.save4.txt
2252000 ./from/test2/test.save3.txt
100 ./from/test2/test.save1.txt
596000 ./from/test2/test.save2.txt
2224000 ./from/test3/test.save3.txt
100 ./from/test3/test.save1.txt
593000 ./from/test3/test.save2.txt
270000 ./from/test4/test.save3.txt
100 ./from/test4/test.save1.txt
332234 ./from/test4/test.save2.txt
2177000 ./from/test4/test.save4.txt
1728000 ./test.save3.txt
180000 ./test.save1.txt
466000 ./test.save11.txt
233000 ./test.save9.txt
686880 ./test.save5.txt
215262 ./test.save7.txt
2560000 ./test.save12.txt
18080 ./test.save10.txt
432000 ./test.save2.txt
10000 ./test.save4.txt
684000 ./test.save6.txt
如何将所有单独的数字加起来(使用 Linux 命令行工具)?
答案1
这应该可以做到:
find ... -exec cat {} \; | wc -l
如果你的版本find
支持它,这将是很多快点:
find ... -exec cat {} + | wc -l
或者如果您想要单独计数和总数:
find ... | xargs wc -l
前两个将处理带空格的文件名。如果文件名带空格,为了使上面最后一个也能正常工作,请使用-print0
和-0
:
find ... -print0 | xargs -0 wc -l
答案2
不太优雅,但是可以
#!/bin/bash
#
total=0
for value in $(find . -name "test.save*" -exec wc -l {} \;|awk '{ print $1 }'); do
let total=total+value
done
echo $total
答案3
您可以将原始解决方案放入 awk 中的求和程序中:
find . -name "test.save*" -exec wc -l {} \; | \
awk '{count += $1} END {print count}'