我正在运行find . -name pattern
以查找一些文件,并且我想优雅地获取这些文件中的总行数。
我怎样才能实现这个目标?
答案1
如果您的版本wc
和find
支持必要的选项:
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