我们有一个 PHP 应用程序,并希望计算特定目录及其子目录下的所有代码行。我们不需要忽略评论,因为我们只是想弄清楚。
wc -l *.php
该命令在给定目录中运行良好,但忽略子目录。我当时认为这可行,但它正在返回 74,绝对不是这样......
find . -name '*.php' | wc -l
提供所有文件的正确语法是什么?
对于另一个单线:
( 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
等)。