我将如何计算行的总数量存在于一个Git仓库中的所有文件?
git ls-files
给我的git的跟踪文件的列表。
我正在寻找一个命令cat
所有这些文件。 就像是
git ls-files | [cat all these files] | wc -l
我将如何计算行的总数量存在于一个Git仓库中的所有文件?
git ls-files
给我的git的跟踪文件的列表。
我正在寻找一个命令cat
所有这些文件。 就像是
git ls-files | [cat all these files] | wc -l
xargs
会做你想要什么:
git ls-files | xargs cat | wc -l
但随着更多的信息,并可能会更好,你可以这样做:
git ls-files | xargs wc -l
git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904
这表明从空树到您当前的工作树的差异。 这恰好计算在当前工作树中的所有行。
为了让数字在当前工作的树,这样做:
git diff --shortstat `git hash-object -t tree /dev/null`
它会给你一个字符串像1770 files changed, 166776 insertions(+)
如果你是因为你想获得该项目的范围的一个想法,希望这个数量,你可能更喜欢的输出CLOC (“计数代码行数”),它给你的语言显著和微不足道行代码的崩溃。
cloc $(git ls-files)
(这条线相当于git ls-files | xargs cloc
它使用。 sh
的$()
命令替换功能。)
输出示例:
20 text files.
20 unique files.
6 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.22 s (62.5 files/s, 2771.2 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Javascript 2 13 111 309
JSON 3 0 0 58
HTML 2 7 12 50
Handlebars 2 0 0 37
CoffeeScript 4 1 4 12
SASS 1 1 1 5
-------------------------------------------------------------------------------
SUM: 14 22 128 471
-------------------------------------------------------------------------------
您必须先安装CLOC。 你或许可以安装cloc
与包管理器 -例如, brew install cloc
与自制 。
cloc $(git ls-files)
往往是在改善cloc .
。 例如,与上面的示例输出git ls-files
报告471行代码。 对于同一个项目, cloc .
报道高达456279行(以及需要六分钟运行),因为它搜索在GIT-忽略的依赖性node_modules
文件夹。
我遇到配料问题git ls-files | xargs wc -l
git ls-files | xargs wc -l
有大量文件,其中线数将得到分块伸到多个打交道时, total
线。
从问题以小费为什么在厕所公用生成多行以“总”? ,我发现下面的命令来绕过这个问题:
wc -l $(git ls-files)
或者,如果你想只检查一些文件,如代码:
wc -l $(git ls-files | grep '.*\.cs')
最好的解决办法,我反正,被埋葬在@ ephemient的答案的评论。 我只是拉了这里,所以它不会被忽视去。 这样做的信贷应该去@FRoZeN(和@ephemient)。
git diff --shortstat `git hash-object -t tree /dev/null`
返回总在回购的工作目录中的文件和线条,没有任何额外的噪声。 作为奖励,只有源代码进行计数 - 二进制文件被排除在计数。
上面的命令在Linux和OS X.它的跨平台版本
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904
这适用于Windows,太。
根据记录,排除空行的选项,
-w
/ --ignore-all-space
, -b
/ --ignore-space-change
, --ignore-blank-lines
, --ignore-space-at-eol
当用于不具有任何影响--shortstat
。 空白行进行计数。
这种工作方式的CLOC 1.68:
cloc --vcs=git
我玩弄cmder( http://gooseberrycreative.com/cmder/ ),我想算HTML,CSS,Java和JavaScript的线。 虽然一些答案上述工作, or
在grep的格局没有-我发现这里( https://unix.stackexchange.com/questions/37313/how-do-i-grep-for-multiple-patterns ),我不得不逃避它
所以,这就是我现在使用:
git ls-files | grep "\(.html\|.css\|.js\|.java\)$" | xargs wc -l
我用的是以下几点:
git grep ^ | wc -l
这种搜索由混帐的正则表达式版本的所有文件^
,它代表一个行的开头,所以这个命令给出行的总数!
在github上这个工具https://github.com/flosse/sloc可以给更多的描述方式输出。 它会创建的源代码统计:
我这样做:
git ls-files | xargs file | grep "ASCII" | cut -d : -f 1 | xargs wc -l
这个工程如果您在资源库中为感兴趣的文件数的所有文本文件。 如果某些被认为是文档等,可以添加排除过滤器。
: | git mktree | git diff --shortstat --stdin
要么:
git ls-tree @ | sed '1i\\' | git mktree --batch | xargs | git diff-tree --shortstat --stdin
尝试:
find . -type f -name '*.*' -exec wc -l {} +
在问题上的目录/目录