2017-08-14 36 views
2

是否有可能更改git status的输出,以便每个文件扩展名仅显示一行?例如,通过文件扩展名获得Git状态摘要

M *.java -> 12 
D *.html -> 2 
M *.md -> 1 

我在Unix上,所以一些grep的魔法也可以。

+0

你可以'git的状态| grep .java | echo“java”\'wc -l \''。当然这应该进行修改和改进,以便对所有类似的扩展进行分组,但也许是方向。 – Maroun

+0

'git status --porcelain'并参见https://www.git-scm.com/docs/git-status#_short_format。 – ElpieKay

回答

1

试试这个:

git status -s | awk '{print $2}' \ 
    | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' \ 
    | uniq -c 

其中:
awk '{print $2}' - 匹配更新的文件
sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' - 提取文件扩展名
uniq -c - calcalate算

+0

我可以获得最初的标识符吗?例如,'M,A,D'(首行字母)。 – kerner1000

+0

@ kerner1000:前两列有*两个*字母(然后是空格,然后是文件名)。第一个是比较HEAD和索引,第二个是比较索引和工作树。考虑你想要什么,例如,“AM”与“MM”。那么,你想要添加一个.html并修改几个以上的内容? – torek

+0

嗯,我只有一个。 '$ git status -s M [..]。java' – kerner1000

相关问题