Как мне использовать шаблоны именования Nant / Ant?
Вопрос
Я должен признать, что я всегда забывал о синтаксических сложностях шаблонов именования для Nant (например.те, которые используются в наборах файлов).На мой взгляд, двойная звездочка / одинарная звездочка очень легко забывается.
Может ли кто-нибудь предоставить окончательное руководство по шаблонам именования?
Решение
Правила таковы:
- одна звездочка (*) соответствует нулю или более символов в пределах имени пути
- двойная звездочка (**) соответствует нулю или более символов на разных уровнях каталога
- вопросительный знак (?) соответствует ровно одному символу в имени пути
Другой способ подумать об этом - двойная звезда (**) соответствует косой черте (/), а одиночная звезда (*) - нет.
Допустим, у вас есть файлы:
- bar.txt
- src/bar.c
- src/baz.c
- src/тест/bartest.c
Затем появились паттерны:
*.c
ничему не соответствует (в текущем каталоге нет файлов .c)src/*.c
матчи 2 и 3*/*.c
соответствует 2 и 3 (потому что * соответствует только одному уровню)**/*.c
соответствует 2, 3 и 4 (потому что ** соответствует любому количеству уровней)bar.*
соответствует 1**/bar.*
совпадения 1 и 2**/bar*.*
совпадения 1, 2 и 4src/ba?.c
матчи 2 и 3
Другие советы
Вот несколько дополнительных совпадений с шаблоном, которые не так очевидны из документации.Протестировано с использованием NAnt для примеров файлов в ответе бензадо:
src**
матчи 2, 3 и 4**.c
совпадения 2, 3 и 4**ar.*
совпадения 1 и 2**/bartest.c/**
соответствует 4src/ba?.c/**
матчи 2 и 3
Двойные звездочки (**
) связаны с совпадающими именами папок, тогда как одиночные символы asterisk (* = multi characters
), а также вопросительный знак (? = single character
) используются для сопоставления имен файлов.
Посмотрите на Ссылка на Nant.Шаблоны набора файлов следующие:
'*' соответствует нулю или более символов, например*.cs
'?' соответствует одному символу, например?.cs
И '**' соответствует дереву каталогов, напримерsrc/**/*.cs найдет все файлы cs в любом подкаталоге src.