如何计算找到的文件的总行数?

如何计算找到的文件的总行数?

我正在运行find . -name pattern以查找一些文件,并且我想优雅地获取这些文件中的总行数。

我怎样才能实现这个目标?

答案1

如果您的版本wcfind支持必要的选项:

find . -name pattern -print0 | wc -l --files0-from=-

这将为您提供每个文件的数量以及总数。如果您只想要总数:

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

find支持它的版本的另一个选项:

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

答案2

$ find . -name '*.txt' -exec cat '{}' \; | wc -l

获取每个文件并将其保存,然后通过设置为行计数模式的cat管道将所有内容传输出去。wc

或者,[未经测试] 奇怪的文件名是安全的:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l

答案3

不幸的是输出:

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

插入额外的行。为了获得可靠的行数,您应该执行以下操作:

find . -name "yourpattern" -print0 | xargs -0 wc -l

这样,您就可以正确处理空格,获得每个文件的行数以及总行数,更快、更时尚!!!

答案4

未经测试,但是类似这样的怎么样:

cat `find . -name "searchterm" -print` | wc -l

相关内容