Справочник по шаблонам сопоставления файлов
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Синтаксис шаблона
Шаблон — это строка или список строк с разделителями новой строки. Имена файлов и каталогов сравниваются с шаблонами для включения (или иногда исключения) в задачу. Сложное поведение можно создать, стекируя несколько шаблонов. Полное руководство по синтаксису см . в разделе 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
Примеры шаблонов исключения
Учитывая шаблон:
*
!*.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