Informations de référence sur les modèles de correspondance de fichiers

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Syntaxe du modèle

Un modèle est une chaîne ou une liste de chaînes délimitées par une nouvelle ligne. Les noms de fichiers et de répertoires sont comparés aux modèles à inclure (ou parfois exclure) dans une tâche. Vous pouvez créer un comportement complexe en empilant plusieurs modèles. Consultez fnmatch pour obtenir un guide de syntaxe complète.

Mettre en correspondance les caractères

La plupart des caractères sont utilisés comme correspondances exactes. Ce qui compte comme une correspondance « exacte » dépend de la plateforme : le système de fichiers Windows ne respecte pas la casse, de sorte que le modèle « ABC » correspondrait à un fichier appelé « abc ». Sur les systèmes de fichiers respectant la casse, ce modèle et ce nom ne correspondent pas.

Les caractères suivants ont un comportement spécial.

  • * correspond à zéro ou plusieurs caractères dans un nom de fichier ou de répertoire. Consultez les exemples.
  • ? correspond à n’importe quel caractère unique dans un nom de fichier ou de répertoire. Consultez les exemples.
  • [] correspond à un jeu ou une plage de caractères dans un nom de fichier ou de répertoire. Consultez les exemples.
  • ** caractère générique récursif. Par exemple, /hello/**/* correspond à tous les descendants de /hello.

Utilisation étendue des caractères génériques

  • ?(hello|world) : correspond à hello ou world zéro ou une fois
  • *(hello|world) : zéro ou plusieurs occurrences
  • +(hello|world) : une ou plusieurs occurrences
  • @(hello|world) : exactement une fois
  • !(hello|world) : ni hello ni world

Notez que les globs étendus ne peuvent pas couvrir les séparateurs de répertoires. Par exemple, +(hello/world|other) est incorrect.

Commentaires

Les modèles qui commencent par # sont traités comme des commentaires.

Exclure des modèles

Le ! de début change la signification d’un modèle « include » à exclure. Vous pouvez inclure un modèle, exclure un sous-ensemble de celui-ci, puis en réinscrire un sous-ensemble : il s’agit d’un modèle « entrelacé ».

Plusieurs ! retournent la signification. Consultez les exemples.

Vous devez définir un modèle « Include » avant d’en exclure un. Consultez les exemples.

Échappement

L’habillage de caractères spéciaux dans [] peut être utilisé pour échapper des caractères glob littéraux dans un nom de fichier. Par exemple, le nom de fichier littéral hello[a-z] peut être échappé en tant que hello[[]a-z].

Barre oblique

/ est utilisé comme séparateur de chemin d’accès sur Linux et macOS. La plupart du temps, les agents Windows acceptent /. Les occasions où le séparateur Windows (\) doit être utilisé sont documentés.

Exemples

Exemples de modèles de base

Exemples d’astérisque

Exemple 1 : Compte tenu du modèle *Website.sln et des fichiers :

ConsoleHost.sln
ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln

Le modèle correspond à :

ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln

Exemple 2 : Étant donné le modèle *Website/*.proj et les chemins d’accès :

ContosoWebsite/index.html
ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/index.html
FabrikamWebsite/FabrikamWebsite.proj

Le modèle correspond à :

ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/FabrikamWebsite.proj

Exemples de point d’interrogation

Exemple 1 : Compte tenu du modèle log?.log et des fichiers :

log1.log
log2.log
log3.log
script.sh

Le modèle correspond à :

log1.log
log2.log
log3.log

Exemple 2 : Compte tenu du modèle image.??? et des fichiers :

image.tiff
image.png
image.ico

Le modèle correspond à :

image.png
image.ico

Exemples de jeu de caractères

Exemple 1 : Compte tenu du modèle Sample[AC].dat et des fichiers :

SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat

Le modèle correspond à :

SampleA.dat
SampleC.dat

Exemple 2 : Compte tenu du modèle Sample[A-C].dat et des fichiers :

SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat

Le modèle correspond à :

SampleA.dat
SampleB.dat
SampleC.dat

Exemple 3 : Compte tenu du modèle Sample[A-CEG].dat et des fichiers :

SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
SampleE.dat
SampleF.dat
SampleG.dat
SampleH.dat

Le modèle correspond à :

SampleA.dat
SampleB.dat
SampleC.dat
SampleE.dat
SampleG.dat

Exemples de caractères génériques récursifs

Compte tenu du modèle **/*.ext et des fichiers :

sample1/A.ext
sample1/B.ext
sample2/C.ext
sample2/D.not

Le modèle correspond à :

sample1/A.ext
sample1/B.ext
sample2/C.ext

Exclure des exemples de modèles

Compte tenu du modèle :

*
!*.xml

et des fichiers :

ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml

Le modèle correspond à :

ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb

Double exclusion

Compte tenu du modèle :

*
!*.xml
!!Fabrikam.xml

et des fichiers :

ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml

Le modèle correspond à :

ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml

Exclusion de dossier

Compte tenu du modèle :

**
!sample/**

et des fichiers :

ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
sample/Fabrikam.dll
sample/Fabrikam.pdb
sample/Fabrikam.xml

Le modèle correspond à :

ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml