我有一个类似于这样的字符串
*.{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}"
。请问有谁可以帮我吗?
file.jpg.tiff
将匹配'.*\.(jpg|png)'
,而'.*\.(jpg|png)$'
则不会。 - Ruslan Osmanovgrep
或cat
等命令之前三思。git ls-files *.jpg *.png
- 0andriygit ls-files '*.jpg' '*.png'
。因此,您的命令git ls-files *.jpg *.png
会被扩展为git ls-files a.jpg b.jpg c.jpg d.png e.png ...
其中文件是从当前目录中的文件列表生成的。此外,简单的git模式仅适用于简单情况,例如仅通过扩展名匹配。稍微复杂一些的条件,例如“由给定集合中的N个字符组成的扩展名”需要正则表达式。 - Ruslan Osmanovcomposer.json
在根目录下。使用git ls-files *composer.json
命令将不能找到some-directory/composer.json
。Bash会对各种扩展(包括通配符)进行处理,然后再调用命令。*composer.json
实际上是为命令构建参数列表。 - Ruslan Osmanovgit ls-files
。只需确保参数已转义,并且传递的是_git模式_,而不是正则表达式。 - Ruslan Osmanov