如何计算目录(及其子目录)中所有文件的总字数?

Dam*_*shu 5 mac bash

我想我可以用 wc 以某种方式做到这一点,如果有递归选项,但我不确定。我想要一个目录及其子目录下文件中的总字数(不仅仅是每个文件的字数)。

注意我正在用我的 mac 执行此操作。

好的,我刚试过这个命令

find enwiki/ -type f | xargs wc -w > output.txt
Run Code Online (Sandbox Code Playgroud)

生成的输出文件有 6425104 行,表明文件很多。但最后总字数只有 381609。也许,总字数超过了 bash 允许的最大值?我不确定是否发生了这种情况,或者我是否错误地使用了 wc。

Kus*_*nda 14

利用find找到的所有文件,然后用它们串联cat和级联流与计算的话wc

find . -type f -exec cat {} + | wc -w
Run Code Online (Sandbox Code Playgroud)

您的命令的问题是,wc如果您有数千个文件要处理,将在成批的文件上多次调用。在上面的命令中,cat将在批处理文件上多次调用,但所有输出都发送到wc.

  • 您可能应该注意到,如果所有文件都不是文本文件,这会给您带来意想不到的结果。如果目录树中有其他类型的文件,“find . -type f -name \\*.txt -print0”可能会更好。 (4认同)