如何使用Glob模式排除vc-开头的目录?已尝试多模式未生效
解决Glob排除vc-开头目录的问题
嘿,我来帮你搞定这个Glob排除的问题!你之前试的模式没生效,主要是没精准匹配到vc-开头的目录结构,下面给你说靠谱的写法和原因:
正确的Glob排除模式
根据你的目录结构,分两种场景给出对应的模式:
场景1:vc-开头的都是顶级目录(和/gb同级)
如果你的vc-abc、vc-abcd都是根目录下的顶级目录,直接用这个模式就能排除它们及所有子内容:
vc-*/
末尾的/是关键,它明确告诉Glob我们要匹配的是目录,而不是文件。
场景2:vc-开头的目录可能出现在任意层级
如果这些vc-开头的目录可能嵌套在其他目录下(比如/some/folder/vc-xyz/something),就用通配符**匹配任意层级的父目录:
**/vc-*/
这个模式会匹配所有位置的vc-开头目录,不管它在哪个层级下,同样末尾的/确保只匹配目录。
为什么你之前的模式没生效?
vc-:这个模式只会匹配名字**恰好是vc-**的目录,而你的目录是vc-abc、vc-abcd,自然匹配不上。vc**:这个模式是匹配以vc开头的任意字符,但它没有限定-这个字符,而且如果不加/的话,会同时匹配文件和目录,精准度不够。vc.:这里的.是Glob的单个字符通配符,只会匹配vc后面跟一个任意字符的名字(比如vca、vc1),完全不符合你的目录命名规则,所以无效。
额外提示
如果你的工具支持否定匹配(比如你是要“包含除vc-开头目录外的所有内容”),可以先匹配所有内容,再排除目标目录:
**/* !**/vc-*/
内容的提问来源于stack exchange,提问作者Jubei Yagyu
相关产品推荐
相关产品推荐

