Dela via


Referens för filmatchningsmönster

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

Mönstersyntax

Ett mönster är en sträng eller lista med nya, avgränsade strängar. Fil- och katalognamn jämförs med mönster som ska inkludera (eller ibland exkludera) dem i en uppgift. Du kan skapa komplexa beteenden genom att stapla flera mönster. En fullständig syntaxguide finns i fnmatch.

Matcha tecken

De flesta tecken används som exakta matchningar. Det som räknas som en "exakt" matchning är plattformsberoende: Windows-filsystemet är skiftlägeskänsligt, så mönstret "ABC" skulle matcha en fil med namnet "abc". På skiftlägeskänsliga filsystem matchar inte det mönstret och namnet.

Följande tecken har ett särskilt beteende.

  • * matchar noll eller fler tecken i ett fil- eller katalognamn. Se exempel.
  • ? matchar ett enskilt tecken i ett fil- eller katalognamn. Se exempel.
  • [] matchar en uppsättning eller ett intervall med tecken i ett fil- eller katalognamn. Se exempel.
  • ** rekursiv jokertecken. Till exempel matchar /hello/**/* alla underordnade /hello.

Utökad globbning

  • ?(hello|world) – matchar hello eller world noll eller en gånger
  • *(hello|world) – noll eller fler förekomster
  • +(hello|world) – en eller flera förekomster
  • @(hello|world) - exakt en gång
  • !(hello|world) – inte hello eller world

Observera att utökade globs inte kan sträcka sig över katalogavgränsare. Till exempel är +(hello/world|other) ogiltigt.

Kommentarer

Mönster som börjar med # behandlas som kommentarer.

Exkludera mönster

Inledande ! ändrar innebörden av ett inkluderingsmönster som ska undantas. Du kan inkludera ett mönster, exkludera en delmängd av det och sedan ta med en delmängd av det igen: detta kallas för ett "interfolierat" mönster.

Flera ! vänder innebörden. Se exempel.

Du måste definiera ett inkluderingsmönster innan ett exkluderingsmönster. Se exempel.

Fly

Omslutning av specialtecken i [] kan användas för att undkomma literala globtecken i ett filnamn. Till exempel kan det literala filnamnet hello[a-z] undantagas som hello[[]a-z].

Snedstreck

/ används som sökvägsavgränsare i Linux och macOS. För det mesta accepterar Windows-agenter /. Tillfällen då Windows-avgränsaren (\) måste användas dokumenteras.

Exempel

Exempel på grundläggande mönster

Asteriskexempel

Exempel 1: Givet mönstret *Website.sln och filer:

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

Mönstret skulle matcha:

ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln

Exempel 2: Med tanke på mönstret *Website/*.proj och sökvägar:

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

Mönstret skulle matcha:

ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/FabrikamWebsite.proj

Exempel på frågetecken

Exempel 1: Givet mönstret log?.log och filer:

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

Mönstret skulle matcha:

log1.log
log2.log
log3.log

Exempel 2: Givet mönstret image.??? och filer:

image.tiff
image.png
image.ico

Mönstret skulle matcha:

image.png
image.ico

Exempel på teckenuppsättning

Exempel 1: Givet mönstret Sample[AC].dat och filer:

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

Mönstret skulle matcha:

SampleA.dat
SampleC.dat

Exempel 2: Givet mönstret Sample[A-C].dat och filer:

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

Mönstret skulle matcha:

SampleA.dat
SampleB.dat
SampleC.dat

Exempel 3: Givet mönstret Sample[A-CEG].dat och filer:

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

Mönstret skulle matcha:

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

Rekursiva jokerteckenexempel

Med tanke på mönstret **/*.ext och filer:

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

Mönstret skulle matcha:

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

Exkludera mönsterexempel

Med tanke på mönstret:

*
!*.xml

och filer:

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

Mönstret skulle matcha:

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

Dubbel exkludera

Med tanke på mönstret:

*
!*.xml
!!Fabrikam.xml

och filer:

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

Mönstret skulle matcha:

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

Undantag för mapp

Med tanke på mönstret:

**
!sample/**

och filer:

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

Mönstret skulle matcha:

ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml