我正在使用Mercurial,我有以下结构:
files
test
demo.jpg
video.flv
video.doc
sport
demo2.jpg
picture.jpg
text.txt
demo3.jpg
demofile3.doc
我想创建一个全局过滤器,它只忽略所有目录中所有“jpg”文件,这些文件是“files”目录的子目录
我尝试使用文件/ * .jpg,但它不起作用。
任何建议都将受到赞赏。
答案 0 :(得分:16)
这对我有用..
syntax: regexp
files/.*/.*jpg
你自己的解决方案看起来更像是一个glob。其中的诀窍是使用**语法来允许子目录。看到这个......
这个glob也适合我
**/files/**/*.jpg
就个人而言,我总是会使用glob syntx来解决这类问题。一旦你了解了**语法,就比正则表达式更容易遵循模式试图做的事情。
答案 1 :(得分:11)
如果您乐意忽略“名为files
的任何目录中的所有JPG文件”,请使用
syntax: glob
files/**.jpg
请参阅hg help patterns
,其中解释了**
是跨越目录分隔符的glob运算符。这意味着文件
files/test/demo.jpg
与files/**.jpg
匹配。
但是,请注意glob模式are not rooted。这意味着名为
的文件 test/files/demo.jpg
也将被忽略,因为它在删除test/
前缀后与模式匹配。
如果您对此有疑问,则需要使用正则表达式。在该语法中,模式读取
syntax: regex
^files/.*\.jpg
我通常不会担心根模式 - 我更喜欢glob模式的简单性。但是很高兴知道如果你真的需要你可以根据忽略模式。
答案 2 :(得分:0)
它必须是glob语法吗?如果使用正则表达式语法,files/.*\.jpg
应该有效。