Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Синтаксис шаблона
Шаблон — это строка или список строк с разделителями новой строки. Имена файлов и каталогов сравниваются с шаблонами для включения (или иногда исключения) в задачу. Сложное поведение можно создать, стекируя несколько шаблонов. Полный синтаксис см. в fnmatch.
Совпадение символов
Большинство символов используются в качестве точных совпадений. То, что считается "точным" совпадением, зависит от платформы: файловая система Windows не учитывает регистр, поэтому шаблон ABC будет соответствовать файлу под названием abc. В файловых системах с учетом регистра этот шаблон и имя не совпадают.
Следующие символы имеют особое поведение.
-
*соответствует нулю или нескольким символам в имени файла или каталога. См. примеры . -
?соответствует любому одному символу в имени файла или каталога. См. примеры . -
[]соответствует набору или диапазону символов в имени файла или каталога. См. примеры . -
**рекурсивный подстановочный знак. Например,/hello/**/*совпадают со всеми потомками/hello.
Расширенное глоббирование
-
?(hello|world)— совпаденияhelloилиworldноль раз или один раз -
*(hello|world)— ноль или больше вхождения -
+(hello|world)— одно или несколько вхождений -
@(hello|world)- ровно один раз -
!(hello|world)- неhelloилиworld
Замечание
Расширенные глобы не могут охватывать разделители каталогов. Например, +(hello/world|other) недопустимо.
Комментарии
Шаблоны, начинающиеся с #, рассматриваются как комментарии.
Исключение шаблонов
Ведущий ! изменяет значение шаблона включения, чтобы исключить.
Вы можете включить шаблон, исключить подмножество, а затем повторно включить подмножество этого: это называется "чередующимся" шаблоном.
Несколько ! переворачивает значение. См. примеры .
Необходимо определить шаблон включения перед шаблоном исключения. См. примеры .
Экранирование
Перенос специальных символов в [] можно использовать для экранирования символов литеральных глобов в имени файла. Например, имя литерального файла hello[a-z] можно экранировать как hello[[]a-z].
Разрез
/ используется в качестве разделителя путей в Linux и macOS.
В большинстве случаев агенты Windows принимают /.
Случаи, когда необходимо задокументировать разделитель Windows (\).
Примеры
- Базовые примеры шаблонов
- Примеры звездочки
- Примеры вопросительного знака
- Примеры набора символов
- Примеры рекурсивных подстановочных знаков
- Примеры шаблонов исключения
- Примеры двойного исключения
- Примеры исключения папок
Базовые примеры шаблонов
Примеры звездочки
Пример 1. Учитывая шаблон *Website.slnи следующие файлы:
ConsoleHost.sln
ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln
Шаблон будет совпадать:
ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln
пример 2: учитывая *Website/*.proj шаблонов и пути:
ContosoWebsite/index.html
ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/index.html
FabrikamWebsite/FabrikamWebsite.proj
Шаблон будет совпадать:
ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/FabrikamWebsite.proj
Примеры вопросительного знака
Пример 1. Учитывая шаблон log?.logи следующие файлы:
log1.log
log2.log
log3.log
script.sh
Шаблон будет совпадать:
log1.log
log2.log
log3.log
Пример 2. Учитывая шаблон image.???и следующие файлы:
image.tiff
image.png
image.ico
Шаблон будет совпадать:
image.png
image.ico
Примеры набора символов
Пример 1. Учитывая шаблон Sample[AC].datи следующие файлы:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
Шаблон будет совпадать:
SampleA.dat
SampleC.dat
Пример 2. Учитывая шаблон Sample[A-C].datи следующие файлы:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
Шаблон будет совпадать:
SampleA.dat
SampleB.dat
SampleC.dat
Пример 3. Учитывая шаблон Sample[A-CEG].datи следующие файлы:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
SampleE.dat
SampleF.dat
SampleG.dat
SampleH.dat
Шаблон будет совпадать:
SampleA.dat
SampleB.dat
SampleC.dat
SampleE.dat
SampleG.dat
Примеры рекурсивных подстановочных знаков
Учитывая шаблон **/*.extи следующие файлы:
sample1/A.ext
sample1/B.ext
sample2/C.ext
sample2/D.not
Шаблон будет совпадать:
sample1/A.ext
sample1/B.ext
sample2/C.ext
Следующий пример был создан Copilot. Copilot работает на основе искусственного интеллекта, поэтому возможны сюрпризы и ошибки. Подробности см. в Общие вопросы об использовании Copilot.
Шаблон **/*.ext glob — это мощный рекурсивный шаблон, используемый во многих файловых системах и средствах (например bash, zsh, Python globи т. д.) для сопоставления всех файлов, заканчивающихся текущим .ext каталогом и всеми подкаталогами, независимо от того, насколько глубоко вложенными.
Ниже приведены некоторые примеры путей, которые будут соответствовать **/*.ext:
sample1/A.extsample1/B.extsample2/C.extsample2/subdir1/D.extsample2/subdir1/subdir2/E.extsample3/F.extsample3/subdir3/G.extsample3/subdir3/subdir4/H.ext
Часть ** означает любое количество каталогов (включая ноль) и *.ext означает, что любой файл заканчивается .ext.
Примеры шаблонов исключения
Учитывая следующий шаблон и следующие файлы:
*
!*.xml
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
Шаблон будет совпадать:
ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb
Примеры двойного исключения
Учитывая следующий шаблон и следующие файлы:
*
!*.xml
!!Fabrikam.xml
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
Шаблон будет совпадать:
ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
Примеры исключения папок
Учитывая следующий шаблон и следующие файлы:
**
!sample/**
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
sample/Fabrikam.dll
sample/Fabrikam.pdb
sample/Fabrikam.xml
Шаблон будет совпадать:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml