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

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

wc -l *.php 

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

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

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


当前回答

另一个获取所有文件总和的命令(当然是Linux)

find ./ -type f -exec wc -l {}  \; | cut -d' ' -f1 | paste -sd+ | bc

与其他答案的主要区别:

使用find-exec,使用膏(带切口),使用bc

其他回答

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

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

您没有指定有多少个文件或所需的输出。

这可能是您想要的:

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

工具Tokei显示目录中代码的统计信息。Tokei将显示文件的数量、文件中的总行数以及按语言分组的代码、注释和空格。Tokei也可在Mac、Linux和Windows上使用。

Tokei的输出示例如下:

$ tokei
-------------------------------------------------------------------------------
 Language            Files        Lines         Code     Comments       Blanks
-------------------------------------------------------------------------------
 CSS                     2           12           12            0            0
 JavaScript              1          435          404            0           31
 JSON                    3          178          178            0            0
 Markdown                1            9            9            0            0
 Rust                   10          408          259           84           65
 TOML                    3           69           41           17           11
 YAML                    1           30           25            0            5
-------------------------------------------------------------------------------
 Total                  21         1141          928          101          112
-------------------------------------------------------------------------------

可以按照存储库中README文件的说明安装Tokei。

如果您希望结果按行数排序,只需在第一个答案中添加|sort或|sort-r(-r表示降序),如下所示:

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

另一个获取所有文件总和的命令(当然是Linux)

find ./ -type f -exec wc -l {}  \; | cut -d' ' -f1 | paste -sd+ | bc

与其他答案的主要区别:

使用find-exec,使用膏(带切口),使用bc