108

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

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

4

4 回答 4

267

规则是:

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

另一种思考方式是双星 (**) 与斜杠 (/) 匹配,但单星 (*) 不匹配。

假设您有以下文件:

  1. 吧.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    
于 2008-09-17T19:49:12.103 回答
19

这里有一些额外的模式匹配,这些匹配在文档中并不那么明显。使用 NAnt 对 benzado 回答中的示例文件进行了测试:

  1. 吧.txt
  2. src/bar.c
  3. src/baz.c
  4. src/test/bartest.c
  • src**                      匹配 2、3 和 4
  • **.c                        匹配 2、3 和 4
  • **ar.*                    匹配 1 和 2
  • **/bartest.c/**  匹配 4
  • src/ba?.c/**        匹配 2 和 3
于 2013-08-14T13:33:08.263 回答
4

查看Nant 参考资料。文件集模式是:

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

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

于 2008-09-16T07:52:24.567 回答
4

双星号 ( **) 与文件夹名称匹配相关联,而单个符号星号 ( * = multi characters) 以及问号 ( ? = single character) 用于匹配文件名。

于 2012-01-11T14:47:39.390 回答