我有一个包含数千个文件的目录(目前为100K).当我使用wc -l ./*时,我将得到:
c1 ./test1.txt
c2 ./test2.txt
...
cn ./testn.txt
c1+c2+...+cn total
因为目录中有很多文件,所以我只想查看总数而不是详细信息.有什么办法吗?
解决方法:
如果您想要的是总行数,而不是其他所有内容,那么我建议使用以下命令:
cat * | wc -l
该catenates当前工作目录中所有文件的内容,并通过wc -l通过管道传输所得的文本blob.
我觉得这很优雅.请注意,该命令不会产生任何无关的输出.
更新:
我没有意识到您的目录包含许多文件.根据此信息,您应该尝试以下命令:
for file in *; do cat "$file"; done | wc -l
大多数人不知道您可以将for循环的输出直接传递到另一个命令中.
请注意,这可能会非常慢.如果您有100,000个左右的文件,我的猜测大约是10分钟.这是一个疯狂的猜测,因为它取决于我无法检查的几个参数.
如果需要更快的速度,则应使用C编写自己的实用程序.如果使用pthreads,则可以使其速度惊人地快.
希望能有所帮助.
最后说明:
如果您有兴趣构建自定义实用程序,我可以帮助您编写一个.这将是一个很好的练习,其他人可能会发现它很有用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。