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

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

wc -l *.php 

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

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

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


当前回答

我的Windows系统上安装了BusyBox。这就是我所做的。

ECHO OFF
for /r %%G in (*.php) do (
busybox grep . "%%G" | busybox wc -l
)

其他回答

您需要一个简单的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,一个简单快捷的工具是LocMetrics。

至少在OS X上,其他一些答案中列出的find+xarg+wc命令在大型列表中多次打印“总计”,但没有给出完整的总计。我能够使用以下命令获得.c文件的单个总数:

查找-名称'*.c'-print0|xargs-0wc-l|grep-v total|awk'{sum+=$1;}END{print“sum:”sum;}'

虽然我喜欢这些脚本,但我更喜欢这个脚本,因为它还显示了每个文件的摘要,只要总计:

wc -l `find . -name "*.php"`

首先更改要知道行数的目录。

例如,如果我想知道一个名为sample的目录的所有文件中的行数,请给出$cd示例。

然后尝试命令$wc-l*。这将返回每个文件的行数以及结尾处整个目录中的行总数。