Как использовать шаблоны именования Nant/Ant?
Я должен признать, что я всегда забывал синтаксические интракасы шаблонов именования для Nant (например, те, которые используются в наборах файлов). Кажется, что двойная звездочка / единственная звездочка очень запоминается.
Может ли кто-нибудь предоставить исчерпывающее руководство по шаблонам именования?
4 ответа
Правила таковы:
- одиночная звезда (*) соответствует нулю или более символов в имени пути
- двойная звезда (**) соответствует нулю или более символов на разных уровнях каталогов
- знак вопроса (?) соответствует ровно одному символу в имени пути
Еще один способ думать об этом - двойная звезда (**) совпадает с косой чертой (/), а одиночная звезда (*) - нет.
Допустим, у вас есть файлы:
- 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 для файлов примеров в ответе benzado:
src**
соответствует 2, 3 и 4**.c
соответствует 2, 3 и 4**ar.*
соответствует 1 и 2**/bartest.c/**
соответствует 4src/ba?.c/**
соответствует 2 и 3
Двойные звездочки (**
) связаны с сопоставлением имен папок, тогда как одиночные символы звездочка (* = multi characters
) а также знак вопроса (? = single character
) используются для сопоставления имен файлов.
Проверьте ссылку Нанта. Шаблоны набора файлов:
"*" соответствует нулю или более символов, например *.cs
'?' соответствует одному символу, например?.cs
И "**" соответствует дереву каталогов, например, src/**/*. Cs найдет все файлы cs в любом подкаталоге src.