当前位置:  开发笔记 > 编程语言 > 正文

通过扩展搜索git存储库中的文件

如何解决《通过扩展搜索git存储库中的文件》经验,为你挑选了1个好方法。

我有一个像这样*.{jpg,png}的字符串,但字符串也可能只是*.scss- 实际上它是一个editorconfig.

然后我想搜索我的git存储库跟踪的这个扩展的每个文件.

我尝试了几种方法,但没有找到任何充分的解决方案.

我得到的最接近的是: git ls-tree -r master --name-only | grep -E ".*\.jpg"

但这仅适用于单个文件扩展名,而不适用于此类内容git ls-tree -r master --name-only | grep -E ".*\.{jpg,png}".

有人可以帮帮我吗?



1> Ruslan Osman..:

试试这个:

git ls-tree -r master --name-only | grep -E '.*\.(jpg|png)'

您尝试通过-E选项传递的表达式被解释为任何字符(.*),点(\.)和字符串{jpg,png}.我猜你在正则表达式组(括号)中将Bash大括号扩展与alternation(|)混淆.

考虑使用行尾锚:'.*\.(jpg|png)$'.

没有grep

正如@ 0andriy指出的那样你可以传递模式git ls-files如下:

git ls-files '*.jpg' '*.png'

注意,您应该转义参数以防止文件名扩展(globbing).特别是星号(*)字符

匹配前面的字符串或RE的任意数量的重复,包括零实例.

但这显然只适用于简单的git模式.对于稍微复杂的情况,例如"扩展匹配来自给定集合的N个字符",您将需要正则表达式(例如,grep).

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有