Partager via


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

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Syntaxe du modèle

Un modèle est une chaîne ou une liste de chaînes délimitées par une 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 complet.

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 exemples.
  • ? correspond à n’importe quel caractère unique dans un nom de fichier ou de répertoire. Consultez exemples.
  • [] correspond à un jeu ou une plage de caractères dans un nom de fichier ou de répertoire. Consultez exemples.
  • ** caractère générique récursif. Par exemple, /hello/**/* correspond à tous les descendants de /hello.

Globbing étendu

  • ?(hello|world) - correspondances hello ou world zéro fois ou une fois
  • *(hello|world) - zéro ou plusieurs occurrences
  • +(hello|world) - une ou plusieurs occurrences
  • @(hello|world) - exactement une fois
  • !(hello|world) - pas hello ni world

Remarque

Les globs étendus ne peuvent pas s’étendre sur les séparateurs de répertoires. Par exemple, +(hello/world|other) n’est pas valide.

Commentaires

Les modèles commençant par # sont traités comme des commentaires.

Exclure des modèles

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

Plusieurs ! retournent la signification. Consultez exemples.

Vous devez définir un modèle Include avant un modèle d’exclusion. Consultez exemples.

Échappement

L’habillage de caractères spéciaux dans [] peut être utilisé pour échapper des caractères glob littérals 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 astérisque

Exemple 1 : Compte tenu du modèle *Website.slnet des fichiers suivants :

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?.loget des fichiers suivants :

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 suivants :

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].datet des fichiers suivants :

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].datet des fichiers suivants :

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].datet des fichiers suivants :

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 génériques récursifs

Compte tenu du modèle **/*.extet des fichiers suivants :

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

L’exemple suivant a été généré par Copilot. Copilot est alimenté par l’IA, donc les surprises et les erreurs sont possibles. Pour plus d’informations, consultez les FAQ sur l’utilisation générale de Copilot.

Le **/*.ext modèle glob est un modèle récursif puissant utilisé dans de nombreux systèmes de fichiers et outils (tels que bash, , zsh, Python globetc.) pour faire correspondre tous les fichiers se terminant par .ext le répertoire actif et tous les sous-répertoires, quelle que soit la profondeur imbriquée.

Voici quelques exemples de chemins d’accès qui correspondent **/*.extà :

  • sample1/A.ext
  • sample1/B.ext
  • sample2/C.ext
  • sample2/subdir1/D.ext
  • sample2/subdir1/subdir2/E.ext
  • sample3/F.ext
  • sample3/subdir3/G.ext
  • sample3/subdir3/subdir4/H.ext

La ** partie signifie n’importe quel nombre de répertoires (y compris zéro), et *.ext signifie tout fichier se terminant par .ext.

Exclure des exemples de modèles

Compte tenu du modèle suivant et des fichiers suivants :

*
!*.xml
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml

Le modèle correspond à :

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

Exemples d’exclusion double

Compte tenu du modèle suivant et des fichiers suivants :

*
!*.xml
!!Fabrikam.xml
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

Exemples d’exclusion de dossier

Compte tenu du modèle suivant et des fichiers suivants :

**
!sample/**
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