我们有一个PHP应用程序,希望统计特定目录及其子目录下的所有代码行。

我们不需要忽视评论,因为我们只是想得到一个粗略的想法。

wc -l *.php 

该命令对于给定的目录非常有效,但它忽略了子目录。我想下面的评论可能有用,但它返回了74,这绝对不是这样。。。

find . -name '*.php' | wc -l

重新输入目录中所有文件的正确语法是什么?


当前回答

首先给出最长的文件(即,也许这些长文件需要一些重构?),并排除一些供应商目录:

 find . -name '*.php' | xargs wc -l | sort -nr | egrep -v "libs|tmp|tests|vendor" | less

其他回答

对于Windows,一个简单快捷的工具是LocMetrics。

您需要一个简单的for循环:

total_count=0
for file in $(find . -name *.php -print)
do
    count=$(wc -l $file)
    let total_count+=count
done
echo "$total_count"

您可以使用此windows power shell代码来计算所需的任何文件类型:

 (gci -include *.cs,*.cshtml -recurse | select-string .).Count

Try:

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

或(当文件名包含特殊字符(如空格)时)

find . -name '*.php' | sed 's/.*/"&"/' | xargs  wc -l

SLOCCount工具也可能有帮助。

它将提供准确的源代码行计数你指向的层次结构,以及一些额外的统计数据。

排序输出:

查找-名称“*.php”| xargs wc-l | sort-nr

不同之处:

wc -l `tree -if --noreport | grep -e'\.php$'`

这很好,但您需要在当前文件夹或其子文件夹中至少有一个*.php文件,否则wc会停止。