在所有子目录上使用wc来计算行数

如何计算所有子目录中所有文件的所有行与wc

 cd mydir wc -l * .. 11723 total 

man wcbuild议wc -l --files0-from=- ,但是我不知道如何生成所有文件的列表作为NUL-terminated names

 find . -print | wc -l --files0-from=- 

不工作。

Solutions Collecting From Web of "在所有子目录上使用wc来计算行数"

你可能想要这个:

 find . -type f -print0 | wc -l --files0-from=- 

如果你只想要总的行数,你可以使用

 find . -type f -exec cat {} + | wc -l 

也许你正在寻找find exec选项。

 find . -type f -exec wc -l {} \; | awk '{total += $1} END {print total}' 

要计算所有行可以使用的特定文件扩展名,

 find . -name '*.fileextension' | xargs wc -l 

如果你想在两个或更多的不同类型的文件,你可以把-o选项

 find . -name '*.fileextension1' -o -name '*.fileextension2' | xargs wc -l 

另一个选择是使用递归grep:

 grep -hRc '' . | awk '{k+=$1}END{print k}' 

awk只是添加数字。 使用的grep选项是:

  -c, --count Suppress normal output; instead print a count of matching lines for each input file. With the -v, --invert-match option (see below), count non-matching lines. (-c is specified by POSIX.) -h, --no-filename Suppress the prefixing of file names on output. This is the default when there is only one file (or only standard input) to search. -R, --dereference-recursive Read all files under each directory, recursively. Follow all symbolic links, unlike -r. 

因此, grep计算匹配任何内容('')的行数,所以基本上只是对行进行计数。

我会建议像

 find ./ -type f | xargs wc -l | cut -c 1-8 | awk '{total += $1} END {print total}' 

比赛迟到了比赛在这里,但不会这也工作? find . -type f | wc -l

这将统计'find'命令输出的所有行。 您可以微调“查找”,以显示任何你想要的。 我使用它来计算深层树中一个特定子目录中子目录的数目: find ./*/*/*/*/*/*/TOC -type d | wc -l find ./*/*/*/*/*/*/TOC -type d | wc -l 。 输出: 76435 。 (只是做一个发现没有所有的干预星号产生了一个错误。)