使用WC上所有子目录的计算行的总和(Use wc on all subdirectories to

2019-07-04 14:21发布

我怎么能指望在所有子目录中的所有文件中的所有行wc

cd mydir
wc -l *
..
11723 total

man wc表明wc -l --files0-from=-但我不知道如何生成的所有文件的清单为NUL-terminated names

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

不工作。

Answer 1:

你可能希望这样的:

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

如果只想线路总数,你可以使用

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


Answer 2:

也许你正在寻找exec的期权find

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


Answer 3:

要计数特定文件扩展名u可以使用所有线路,

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

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

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


Answer 4:

另一种选择是使用递归的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 ,因此,计算匹配任何东西(“”)的行数,所以本质上只是计数线。



Answer 5:

我建议像

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


Answer 6:

有点晚了这里的比赛,但不会这也是工作? find . -type f | wc -l

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



文章来源: Use wc on all subdirectories to count the sum of lines