假设我有一个文件列表,并且想按目录汇总到一定深度。
例如,我想查看git提交已更改或git diff影响的目录。
git diff --name-only
或git show --name-only
的输出列出如下内容:
foo/1.txt
foo/2.txt
bar/3.txt
bar/4.txt
但按目录的摘要将显示:
foo/
bar/
答案 0 :(得分:2)
将文件列表放入perl,然后提取文件名的前N个部分。 (此位期望所有项目至少具有此深度!)
然后打印提取的文本(如果尚未看到)。
例如:
git show --name-only SHA | perl -n -e 'my ($root) = m[^((\w+/){DEPTH})]; print $root . "\n" if !exists $seen{$root} ; $seen{$root} = 1;'
将DEPTH替换为要考虑的目录深度。