如何递归计算目录中的所有代码行?
我们有一个PHP应用程序,并且想要统计特定目录及其子目录下的所有代码行。 我们不需要忽视评论,因为我们只是想弄清楚一个概念。
wc -l *.php
该命令在给定的目录中工作良好,但忽略子目录。 我认为这可能会起作用,但它正在返回74,这绝对不是这种情况...
find . -name '*.php' | wc -l
在所有文件中输入正确的语法是什么?
尝试:
find . -name '*.php' | xargs wc -l
SLOCCount工具也可能有帮助。
它会为您指定的任何层次结构提供精确的源代码行数,以及一些附加统计数据。
对于另一个单线:
( find ./ -name '*.php' -print0 | xargs -0 cat ) | wc -l
使用空格名称,只输出一个数字。
如果使用Bash(或ZSH)的新版本,它更简单:
wc -l **/*.php
在Bash shell中,这需要设置globstar
选项,否则**
glob-operator不是递归的。 要启用此设置,请发出
shopt -s globstar
为了使其成为永久的,将它添加到其中一个初始化文件( ~/.bashrc
, ~/.bash_profile
等)。
上一篇: How to count all the lines of code in a directory recursively?
下一篇: How to escape single quotes within single quoted strings?