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

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

wc -l *.php 

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

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

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


当前回答

非常简单:

find /path -type f -name "*.php" | while read FILE
do
    count=$(wc -l < $FILE)
    echo "$FILE has $count lines"
done

其他回答

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

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

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

这可能是您想要的:

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

非常简单:

find /path -type f -name "*.php" | while read FILE
do
    count=$(wc -l < $FILE)
    echo "$FILE has $count lines"
done

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

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

与其他答案的主要区别:

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

Try:

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

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

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

SLOCCount工具也可能有帮助。

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

排序输出:

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