例如,我需要从提交中生成所有图像和 CSS 文件以及修改日期的列表。
git ls-tree -r --name-only HEAD | while read filename; do
echo "$(git log -1 --format="%ad" -- $filename) $filename"
done
我该如何修改它以仅返回 jpg、gif、png 和 css 文件?
答案1
哦,我明白了@Marco - 谢谢。我没有想到我可以把 grep 混在一起,例如,这个小小的修改效果很好。
--name-only HEAD | grep ".css" | while...
答案2
由于您需要所有图像和 CSS 文件的列表,理想情况下,您应该将输出传输到类似以下内容的位置:
grep '.gif$\|.jpg$\|.png$\|.css$'
当然,您可以添加项目可能包含的更多相关扩展名,例如 .bmp。
如果我尝试,ls |grep -i '.gif$\|.jpg$\|.png$\|.css$'
我会得到当前文件夹中具有给定扩展名的所有文件的列表。
让我们仔细看看这个命令:
$
确保不会匹配任何不需要的文件,例如 .css.bak。$
匹配行尾。
\|
允许您指定多个模式,因此您不需要调用多个git ls-tree
来获取整个列表。
如果您的 repo 包含任何带有大写扩展名的文件,您可能需要添加这些文件-i
以便不区分大小写地运行 grep。
单个之间的模式'
确保点被解释为点,而不是正则表达式中的“任何字符”。