我的src文件夹里有*.test.*个文件,我想找出贡献最大的作者.我想出了下面的命令

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

但不幸的是,由于某些原因,它只适用于第一个文件.如何对find之前找到所有文件运行该命令?或者我必须以某种方式"收集"git命令执行的结果

我已经在谷歌上搜索了xargs-L个论点,但它没有帮助.我做错了什么?

预期结果应如下所示

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

推荐答案

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

-0xargs的参数,因此必须传递给xargs,而不是传递给git blame.

git blame一次只能处理一个文件,所以让xargs使用-n1传递一个文件.

Linux相关问答推荐

使用信号处理程序实现Hibernate 功能

无法放弃所有权限,但可以放弃 CAP_SETUID 权限.

在 Linux 上的 std::threads 中创建子进程

CMake:处理静态库和共享库的正确方法

awk 打印除最后一列以外的所有内容 + 最后一列

什么命令用于在linux中创建或修改具有指定文件大小的多个文件

使用打印命令 Select 子域

在 Linux 中 Select 多个同名的可执行文件

如何重新安装最新的 cmake 版本?

哪个程序在给定任何文件的情况下创建一个 C 数组?

在 Linux/POSIX 系统上获取用户全名的最简单方法是什么?

如何下载较旧的 google play 服务?

Pthread mutex互斥断言错误

将 CMake 项目导入 Eclipse CDT

列出当前目录和所有子目录中特定大小的文件

Ant 找不到 javac,在 Ubuntu 上不会设置 JAVA_HOME

使用 C++ 代码在 Linux 中清除终端

我可以告诉 Linux 不要换出特定进程的内存吗?

linux中netstat和ss的区别?

构建窗口管理器