You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让xargs处理find找到的所有文件以统计Git贡献最多的作者?

解决方法

你的命令失效核心问题是git blame不支持-0参数,这个错误参数导致命令仅处理第一个文件就终止。调整后的命令可以正确遍历所有匹配文件并完成作者贡献统计:

find ./src/ -name "*.test.*" -print0 | xargs -0 git --no-pager blame -p | grep "^author " | sort | uniq -c | sort -nr

各部分作用说明:

  • find ./src/ -name "*.test.*" -print0:查找src目录下所有符合*.test.*格式的文件,用空字符分隔文件名(避免文件名含空格、特殊字符时出现解析错误)
  • xargs -0 git --no-pager blame -p:通过xargs接收空字符分隔的文件名,逐个传递给git blame;-p让git blame输出包含作者信息的详细格式,--no-pager避免分页打断输出
  • grep "^author ":过滤出所有标记作者的行
  • sort:将相同作者的行集中排列,确保uniq能准确统计次数
  • uniq -c:统计每个作者出现的次数
  • sort -nr:按贡献次数从多到少排序(可选,方便快速定位贡献最多的作者)

示例输出:

2 author Cat Tom
1 author Mouse Jerry
1 author Sponge Bob

你也可以直接用git log简化流程,无需依赖find和xargs:

git log --shortstat --pretty="%an" -- src/**/*.test.* | grep -v "^$" | sort | uniq -c | sort -nr

这个命令通过git直接遍历目标文件,提取作者名并完成统计,效果和前者一致。

内容的提问来源于stack exchange,提问作者Кирилл Леушкин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:55:04