Answers:
我看到它随处可见并自己使用:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
正如我所提到的,我一直在使用CLOC,它非常易于使用。这是一个PERL脚本,您可以在项目目录中添加并运行它。Nathan Kinsinger
PERL已经是Mac OS的一部分,您可以通过这种方式调用脚本来查找已编写的行数:
perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
这是我从以下命令获得的输出示例:
176 text files.
176 unique files.
4 files ignored.
http://cloc.sourceforge.net v 1.56 T=2.0 s (86.0 files/s, 10838.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Objective C 80 3848 1876 11844
C/C++ Header 92 980 1716 1412
-------------------------------------------------------------------------------
SUM: 172 4828 3592 13256
-------------------------------------------------------------------------------
打开Terminal.app,进入项目的根目录,然后运行以下命令:
仅适用于Swift:
find . \( -iname \*.swift \) -exec wc -l '{}' \+
仅对于Obj-C:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
对于Obj-C + Swift:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
对于Obj-C + Swift + C + C ++:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.c -o -iname \*.cc -o -iname \*.h -o -iname \*.hh -o -iname \*.hpp -o -iname \*.cpp -o -iname \*.swift \) -exec wc -l '{}' \+
终端快速提示:
ls:列出目录内容
cd:更改目录
按下选项卡以自动完成
记住在空格前放置“ \”反斜杠,
我建议从主项目下放一个文件夹,这样就可以消除框架中的代码数
在终端中,切换到项目目录并运行:
find . -type f -print0 | xargs -0 cat | wc -l
如果只需要某些文件类型,请尝试类似
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
查看Xcode Statistician,它完全可以满足您的需求。它还提供了其他有趣的统计数据,因此值得不时地尝试一下。
请注意,尽管它会成组显示,但它不会出现在真实文件夹中。奇怪的是您没有使用真实的文件夹,因此效果很好。如果您使用的是文件夹,则只需对每个文件夹进行计数并将它们加在一起。
注意:从2012年6月开始,看来这不适用于最新版本的Xcode。
如果您在终端中转到项目的目录,然后输入:
find . "(" -name "*.h" -or -name "*.m" -or -name "*.mm" -or -name "*.hpp" -or -name "*.cpp" -or -name "*.c" -or -name "*.cc" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
这将为您提供项目明细,以及每个文件和整个项目的总行数。
find . "(" -name "*.swift" ")" -print0 | xargs -0 wc -l
find . "(" -name "RE*.swift" ")" -print0 | xargs -0 wc -l
Nozzi的版本不适用于我,但是这个版本:
find . -type f -print0 | xargs -0 cat | wc -l
快速简便的方法:
使用正则表达式搜索(“查找导航器”,选择“查找”>“正则表达式”)。
。\ n
可以方便地与Xcode搜索范围一起使用,并且您可以轻松地将其自定义为要计数的任何类型的行;)。
您可以通过MacPorts 安装SLOCCount。或者,更粗略地讲,您可以使用wc -l。
我不熟悉xcode,但是如果您只需要计算目录树中所有这些特定文件的行数,则可以使用以下命令:
find .... match of all those files ... -exec wc -l {} +
遵循Joshua Nozzi的回答,在GNU中,发现此类文件的正则表达式如下:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +
甚至
find -regex ".*\.\(m\|mm\|cpp\|swift\)$" -exec wc -l {} +
这种使用正则表达式来匹配任何结尾的文件.m
,.mm
,.cpp
或者.swift
。您可以在如何在文件查找中使用正则表达式中查看有关这些表达式的更多信息。
如果您使用的是Mac OS find,那么您需要一种稍微不同的方法,如Motti Shneor在评论中所述:
find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +
两者都将以以下形式提供输出:
234 ./file1
456 ./file2
690 total
因此,您可以像这样保留它,也可以通过管道将其发送到tail -1
(即),find ... | tail -1
这样您就可以得到最后一行。
很抱歉重复。这是恕我直言的最简单方法:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
这会将所有文件从项目文件夹复制到newFolder
。
newFolder
line-counter
是一个很好的选择。它比CLOC更轻巧,比其他命令更强大,更易于使用。
快速概述
这就是您获得工具的方式
$ pip install line-counter
使用line
命令来获取当前目录下的文件数和行数(递归)
$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839
如果您想了解更多细节,请使用line -d
。
$ line -d
Search in /Users/Morgan/Documents/Example/
Dir A/file C.c 72
Dir A/file D.py 268
file A.py 467
file B.c 32
file count: 4
line count: 839
这个工具最好的部分是,您可以向其中添加.gitignore之类的配置文件。您可以设置规则以选择或忽略要计数的文件种类,就像在'.gitignore'中所做的一样。是的,此工具的发明只是为了让我知道要简化的行数。
更多描述和用法在这里:https : //github.com/MorganZhang100/line-counter
我是这个简单工具的作者。希望它可以帮助别人。