匹配模式的文件的 Shell 脚本并计算每个目录的出现次数

匹配模式的文件的 Shell 脚本并计算每个目录的出现次数

我有以下问题:我想计算每个目录的迁移文件数。

我的结构总是这样的:

/some/path/app1/migrations/0001_hello_world.py  
/some/path/app2/migrations/0001_foo.py  
/some/path/app2/migrations/0002_bar.py

我需要的是一个 shell 脚本,在最好的情况下是一个单行脚本以获得以下结果:

app1: 1
app2: 2

所以我得到每个应用程序目录的文件数量。

我得到了我的文件列表:

git diff --color --name-only --diff-filter=A origin/develop my-branch | grep "\/migrations\/[0-9]"

我可以计算所有这些匹配项,wc -l但无法计算每个目录。

不幸的是,即使有了谷歌和堆栈,我也被困住了。

关于该主题有什么想法吗?

答案1

尝试,

git diff --color --name-only --diff-filter=A origin/develop my-branch \
    | grep '/migrations/[0-9]' \
    | cut -d/ -f4 \
    | sort \
    | uniq -c

根据需要调整cut(此处:)的字段编号。4

输出:

  2 app1
  1 app2

答案2

这将起作用:

$ for folder in *; do echo "$folder: "; \
    find ./$folder -type f | wc -l; done | grep -A 1 "some/path/"`

相关内容