Referência de padrões de correspondência de arquivos
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Sintaxe de padrões
Um padrão é uma cadeia de caracteres ou uma lista de cadeias de caracteres delimitadas por nova linha. Os nomes de arquivos e diretórios são comparados a padrões para incluí-los (ou, às vezes, excluí-los) em uma tarefa. Você pode criar um comportamento complexo empilhando vários padrões. Confira fnmatch para obter um guia de sintaxe completo.
Corresponder caracteres
A maioria dos caracteres são usados como correspondências exatas. O que conta como uma correspondência "exata" depende da plataforma: o sistema de arquivos do Windows não diferencia maiúsculas de minúsculas, portanto, o padrão "ABC" corresponderia a um arquivo chamado "abc". Em sistemas de arquivos que diferenciam maiúsculas de minúsculas, esse padrão e o nome não corresponderiam.
Os caracteres a seguir têm um comportamento especial.
*
corresponde a zero ou mais caracteres em um nome de arquivo ou diretório. Consulte os exemplos.?
corresponde a qualquer caractere único dentro de um nome de arquivo ou diretório. Consulte os exemplos.[]
corresponde a um conjunto ou intervalo de caracteres em um nome de arquivo ou diretório. Consulte os exemplos.**
curinga recursivo. Por exemplo,/hello/**/*
corresponde a todos os descendentes de/hello
.
Recurso de curinga estendido
?(hello|world)
– faz correspondência ahello
ouworld
zero ou uma vez*(hello|world)
– zero ou mais ocorrências+(hello|world)
– uma ou mais ocorrências@(hello|world)
– exatamente uma vez!(hello|world)
– nãohello
ouworld
Observe que globs estendidos não podem abranger separadores de diretório. Por exemplo, +(hello/world|other)
não é válido.
Comentários
Os padrões que começam com #
são tratados como comentários.
Excluir padrões
A liderança !
altera o significado de um padrão de inclusão a ser excluído.
Você pode incluir um padrão, excluir um subconjunto dele e incluir novamente um subconjunto disso: isso é conhecido como um padrão "intercalado".
Vários !
invertem o significado. Consulte os exemplos.
Você deve definir um padrão de inclusão antes de excluir um. Consulte os exemplos.
Escape
O encapsulamento de caracteres especiais em []
pode ser usado para escapar caracteres glob literais em um nome de arquivo. Por exemplo, o nome do arquivo literal hello[a-z]
pode ser escapado como hello[[]a-z]
.
Barra
/
é usada como separador de caminho no Linux e no macOS.
Na maioria das vezes, os agentes do Windows aceitam /
.
Ocasiões em que o separador do Windows (\
) deve ser usado são documentados.
Exemplos
Exemplos de padrão básico
Exemplos de asterisco
Exemplo 1: Considerando o padrão *Website.sln
e os arquivos:
ConsoleHost.sln
ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln
O padrão corresponderia:
ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln
Exemplo 2: Considerando o padrão *Website/*.proj
e os caminhos:
ContosoWebsite/index.html
ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/index.html
FabrikamWebsite/FabrikamWebsite.proj
O padrão corresponderia:
ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/FabrikamWebsite.proj
Exemplos de ponto de interrogação
Exemplo 1: Considerando o padrão log?.log
e os arquivos:
log1.log
log2.log
log3.log
script.sh
O padrão corresponderia:
log1.log
log2.log
log3.log
Exemplo 2: Considerando o padrão image.???
e os arquivos:
image.tiff
image.png
image.ico
O padrão corresponderia:
image.png
image.ico
Exemplos de conjunto de caracteres
Exemplo 1: Considerando o padrão Sample[AC].dat
e os arquivos:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
O padrão corresponderia:
SampleA.dat
SampleC.dat
Exemplo 2: Considerando o padrão Sample[A-C].dat
e os arquivos:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
O padrão corresponderia:
SampleA.dat
SampleB.dat
SampleC.dat
Exemplo 3: Considerando o padrão Sample[A-CEG].dat
e os arquivos:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
SampleE.dat
SampleF.dat
SampleG.dat
SampleH.dat
O padrão corresponderia:
SampleA.dat
SampleB.dat
SampleC.dat
SampleE.dat
SampleG.dat
Exemplos curinga recursivos
Considerando o padrão **/*.ext
e os arquivos:
sample1/A.ext
sample1/B.ext
sample2/C.ext
sample2/D.not
O padrão corresponderia:
sample1/A.ext
sample1/B.ext
sample2/C.ext
Excluir exemplos de padrão
Dado o padrão:
*
!*.xml
e arquivos:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
O padrão corresponderia:
ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb
Exclusão dupla
Dado o padrão:
*
!*.xml
!!Fabrikam.xml
e arquivos:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
O padrão corresponderia:
ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
Exclusão de pasta
Dado o padrão:
**
!sample/**
e arquivos:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
sample/Fabrikam.dll
sample/Fabrikam.pdb
sample/Fabrikam.xml
O padrão corresponderia:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml