如何find一组find的文件(使用Linux命令行工具)中的总行数?

我可以find使用(例如)匹配特定模式的每个文件的行数:

$ 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命令行工具)相加?

这应该做到这一点:

 find ... -exec cat {} \; | wc -l 

如果你的版本find支持它,这将更快:

 find ... -exec cat {} + | wc -l 

或者如果你想要个人数量和总数:

 find ... | xargs wc -l 

前两个将处理空格的文件名。 为了使上面的最后一个工作,如果有空格的文件名,使用-print0-0

 find ... -print0 | xargs -0 wc -l 

不是很优雅,但这会做

 #!/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 

你可以把你原来的解决scheme和pipe道放到awk中的求和程序中:

 find . -name "test.save*" -exec wc -l {} \; | \ awk '{count += $1} END {print count}'