it-swarm-ru.tech

Как использовать шаблоны именования Nant / Ant?

Я должен признать, что я всегда забывал синтаксические интракасы именования для Нанта (например, те, которые используются в наборах файлов). Мне кажется, что двойная звездочка/одна звездочка очень запоминаема.

Может ли кто-нибудь предоставить исчерпывающее руководство по шаблонам именования?

88
berko

Правила таковы:

  • одиночная звезда (*) соответствует нулю или более символов в пределах имени пути
  • двойная звезда (**) соответствует нулю или более символов на разных уровнях каталогов
  • знак вопроса (?) соответствует ровно одному символу в имени пути

Еще один способ думать об этом - двойная звезда (**) соответствует косой черте (/), а одиночная звезда (*) - нет.

Допустим, у вас есть файлы:

  1. bar.txt
  2. sRC/bar.c
  3. sRC/baz.c
  4. sRC/тест/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
219
benzado

Вот несколько дополнительных совпадений с образцами, которые не так очевидны из документации. Протестировано с использованием NAnt для файлов примеров в ответе benzado:

  • src** соответствует 2, 3 и 4
  • **.c соответствует 2, 3 и 4
  • **ar.* соответствует 1 и 2
  • **/bartest.c/** соответствует 4
  • src/ba?.c/** соответствует 2 и 3
14
sparkplug

Двойные звездочки (**) связаны с сопоставлением имен папок, в то время как одинарные символы звездочка (* = multi characters), а также знак вопроса (? = single character) используются для сопоставления имен файлов.

4
Aditya Kumar Shrivastava

Проверьте ссылка Нанта . Шаблоны набора файлов:

"*" соответствует нулю или более символов, например, * .cs
? соответствует одному символу, например ? .cs

И "**" соответствует дереву каталогов, например src/**/*. cs найдет все файлы cs в любом подкаталоге src.

3
Andy Whitfield