2017-08-14 45 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