我有一堆.js
文件。由于有相应的.spec.js
,有些有.test.js
文件,有些没有相应的文件。
我正在将规范文件转换为测试文件,但我想首先针对最经常更改的文件。
要做到这一点,我有一个bash命令,在Git中查找大多数更改的文件,但我想过滤返回的列表,只包括具有匹配的.spec.js
文件的文件。
下面是现有的命令:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
要求列出缺少相应文件的文件的问题中的代码看起来很有帮助
for f in *.ext; do test -e $f.txt || echo $f; done
意味着我可以使用
for f in $(git log --pretty=format: --name-only); do test -e ${f%.*}.spec.js && echo $f; done | sort | uniq -c | sort -rg | head -25
但是如果可能的话,我不想遍历git日志输出的每一行,因为它显然包含重复的内容!这是相当快的(~1秒),但我觉得应该有一个"整洁"的选项。
过滤器列表中存在的文件的答案几乎有帮助,但依赖于ls
。
有更好的方法得到这个输出吗?
可能是这样的:while IFS= read -r file; do echo $file done < <(git log --pretty-format: --name-only | grep ".spec.js" | sort | uniq -c | sort -rg | head -25)
这是使用grep过滤git日志结果的一种方法。然后你可以在while循环中做任何你想做的事情。这是经过测试的。确保这些<(