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

99

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

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

Берко
источник
3
Ссылку прочитал. И перечитай. И перечитай. Я просто думаю, что у него очень скудный набор примеров, и его послание неясно.
berko
Может быть, вы можете точно указать, чего вы пытаетесь достичь, и кто-нибудь сможет дать лучший ответ?
Энди Уитфилд

Ответы:

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    
Benzado
источник
5
Я думаю, что это объяснение гораздо лучше, чем ссылка на Нант. Ура!
berko
1
Что соответствует src / * / **? Я ожидал, что это будет 4, но мой опыт работы с maven, похоже, показывает, что вы сопоставляете любые файлы в любых папках, которые вам нужны src / * / * / **
Мэтью Баккетт 02
1
что бы **.cсовпадать?
chharvey
3
Я больше не использую Ant, поэтому мне некуда отвечать на дополнительные вопросы. Вам следует задать новый вопрос или, что еще лучше, найти ответ и затем отредактировать мой ответ.
benzado 03
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
чепуха
4

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

Адитья Кумар Шривастава
источник
3

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

'*' соответствует нулю или большему количеству символов, например, * .cs
'?' соответствует одному символу, например? .cs

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

Энди Уитфилд
источник