如何使用Nant / Ant命名模式?


99

我不得不承认,我总是忘记了Nant命名模式的语法内在含义(例如,文件集中使用的那些)。在我的脑海中,双星号/单星号的东西似乎很容易忘记。

有人可以提供有关命名模式的权威指南吗?


3
我已经阅读了参考资料。并重新阅读。并重新阅读。我只是认为它的示例集确实很差,而且其信息还不清楚。
berko

也许您可以确切指定要达到的目标,然后有人可以提供更好的答案?
安迪·惠特菲尔德

Answers:


240

规则是:

  • 单个星号(*)与路径名中的零个或多个字符匹配
  • 双星(**)在目录级别匹配零个或多个字符
  • 问号(?)与路径名中的一个字符完全匹配

考虑它的另一种方法是双星(**)匹配斜杠(/),但单星(*)不匹配。

假设您有以下文件:

  1. bar.txt
  2. src / bar.c
  3. src / baz.c
  4. src / test / bartest.c

然后的模式:

  • *.c             不匹配(当前目录中没有.c文件)
  • src/*.c     匹配2和3
  • */*.c         匹配2和3(因为*仅匹配一个级别)
  • **/*.c       匹配2、3和4(因为**匹配任意数量的级别)
  • bar.*         符合1
  • **/bar.*   匹配1和2
  • **/bar*.* 匹配1、2和4
  • src/ba?.c 匹配2和3    

5
我认为这比Nant参考文献更好。干杯!
berko

1
src / * / **匹配什么?我希望它是4,但是我在maven的经验似乎表明您匹配了需要src / * / * / **的任何文件夹中的任何文件
Matthew Buckett

1
**.c匹配什么?
chharvey

3
我不再使用Ant,因此我无法回答后续问题。您应该提出一个新问题,或更妙的是找到答案,然后对我的答案进行修改。
benzado

1
@sitaktif对其进行考虑的一种方法bar.txt是隐式地./bar.txt.意味着当前目录)。因此,该名单是真的./bar.txt./src/bar.c等,以及./假设。
benzado

16

这是一些额外的模式匹配,这些匹配在文档中不太明显。使用NAnt测试了benzado答案中的示例文件:

  • src**                      匹配2、3和4
  • **.c                        匹配2、3和4
  • **ar.*                    匹配1和2
  • **/bartest.c/**  符合4个
  • src/ba?.c/**        匹配2和3

2
小提示:使用ant(1.8.2)**。c不能替代** / *。c
nonsenz 2013年


3

查看Nant参考。文件集模式为:

'*'匹配零个或多个字符,例如* .cs
'?' 匹配一个字符,例如?.cs

并且'**'与目录树匹配,例如src / ** / *。cs将在src的任何子目录中找到所有cs文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.