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

我必须承认,我总是忘记 Nant 命名模式(例如,在文件集中使用的命名模式)的语法错误。双星号/单星号的东西似乎在我的脑海中很容易被遗忘。

有人能提供一个命名模式的明确指南吗?

58683 次浏览

查看 南特指南。文件集模式如下:

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

“ * *”匹配一个目录树,例如 src/* */* . cs 将在 src 的任何子目录中找到所有 cs 文件。

规则如下:

  • 单个星号(*)匹配零个或多个字符 within a path name
  • a double star (**) matches zero or more characters 跨目录级别
  • 问号(?)与路径名称中的一个字符完全匹配

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

假设你拿到了文件:

  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*.*匹配12和4
  • src/ba?.c匹配2号和3号

Double asterisks (**) are associated with the folder-names matching, whereas single symbols asterisk (* = multi characters) as well as the question-mark (? = single character) are used to match the file-names.

这里有一些额外的模式匹配,从文档中看不出来。在 Benzado 的回答中,使用 NAnt 对示例文件进行了测试:

  1. Bar.txt
  2. Src/bar.c
  3. Src/baz.c
  4. Src/test/bartest.c
  • src**匹配23和4
  • **.c匹配23和4
  • **ar.*匹配1和2
  • **/bartest.c/**匹配4
  • src/ba?.c/**        matches 2 and 3