我有一个包含数千个文件的目录(目前为 100K)。当我使用 wc -l ./*
时,我会得到:
c1 ./test1.txt
c2 ./test2.txt
...
cn ./testn.txt
c1+c2+...+cn total
因为目录下有很多文件,所以只想看总数,不看详情。有什么办法吗?
我尝试了几种方法,但出现以下错误:
参数列表太长
最佳答案
如果你想要的只是总行数,那么我建议使用以下命令:
cat * | wc -l
这catenates当前工作目录中所有文件的内容,并通过 wc -l
将生成的文本 block 通过管道传输。
我觉得这很优雅。请注意,该命令不会产生无关的输出。
更新:
我没有意识到你的目录包含这么多文件。根据此信息,您应该尝试此命令:
for file in *; do cat "$file"; done | wc -l
大多数人不知道您可以将 for
循环的输出直接传送到另一个命令。
请注意,这可能非常慢。如果您有 100,000 个左右的文件,我猜大概需要 10 分钟。这是一个大胆的猜测,因为它取决于几个我无法检查的参数。
如果您需要更快的东西,您应该用 C 编写您自己的实用程序。如果您使用 pthreads,您可以使它快得惊人。
希望对您有所帮助。
最后说明:
如果您有兴趣构建自定义实用程序,我可以帮助您编写一个。这将是一个很好的练习,其他人可能会发现它很有用。
关于linux - 目录中的总行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47026533/