Freigeben über


Referenz zu Dateiabgleichsmustern

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

Mustersyntax

Ein Muster ist eine Zeichenfolge oder Liste mit durch Newline getrennten Zeichenfolgen. Datei- und Verzeichnisnamen werden mit Mustern verglichen, die sie in eine Aufgabe einschließen (oder manchmal ausschließen). Sie können komplexes Verhalten aufbauen, indem Sie mehrere Muster stapeln. Eine vollständige Syntaxanleitung finden Sie unter fnmatch.

Zeichen abgleichen

Die meisten Zeichen werden als genaue Übereinstimmungen verwendet. Was als "genaue" Übereinstimmung zählt, ist plattformabhängig: Das Windows-Dateisystem ist ohne Groß-/Kleinschreibung, sodass das Muster "ABC" mit einer Datei namens "abc" übereinstimmt. Bei Dateisystemen mit Beachtung der Groß-/Kleinschreibung stimmt dieses Muster und der Name nicht überein.

Die folgenden Zeichen weisen ein spezielles Verhalten auf.

  • * entspricht null oder mehr Zeichen innerhalb einer Datei oder eines Verzeichnisnamens. Weitere Informationen finden Sie unter Beispiele.
  • ? entspricht jedem einzelnen Zeichen innerhalb einer Datei oder eines Verzeichnisnamens. Weitere Informationen finden Sie unter Beispiele.
  • [] entspricht einem Satz oder Bereich von Zeichen innerhalb einer Datei oder eines Verzeichnisnamens. Weitere Informationen finden Sie unter Beispiele.
  • ** rekursiven Wildcard. Beispielsweise entspricht /hello/**/* allen Nachfolgern von /hello.

Erweiterte Globbing

  • ?(hello|world) - Übereinstimmungen hello oder Nullzeiten oder world einmal
  • *(hello|world) – Null oder mehr Vorkommen
  • +(hello|world) – mindestens ein Vorkommen
  • @(hello|world) - genau einmal
  • !(hello|world) - nicht hello oder world

Hinweis

Erweiterte Globs können keine Verzeichnistrennzeichen umfassen. Ist z. B +(hello/world|other) . ungültig.

Kommentare

Muster, die mit # beginnen, werden als Kommentare behandelt.

Ausschließen von Mustern

Führende ! ändert die Bedeutung eines auszuschließenden Includemusters. Sie können ein Muster einschließen, eine Teilmenge davon ausschließen und dann eine Teilmenge davon erneut einschließen: Dies wird als "interleaved"-Muster bezeichnet.

Mehrere ! kippt die Bedeutung. Weitere Informationen finden Sie unter Beispiele.

Sie müssen ein Includemuster definieren, bevor ein Ausschlussmuster festgelegt wird. Weitere Informationen finden Sie unter Beispiele.

Escapezeichen

Das Umbrechen von Sonderzeichen in [] kann verwendet werden, um Literal-Globzeichen in einem Dateinamen zu escapen. Der Literaldateiname hello[a-z] kann z. B. als hello[[]a-z]escapet werden.

Schrägstrich

/ wird als Pfadtrennzeichen unter Linux und macOS verwendet. In den meisten Jahren akzeptieren Windows-Agents /. Gelegenheiten, bei denen das Windows-Trennzeichen (\) verwendet werden muss, sind dokumentiert.

Beispiele

Grundlegende Musterbeispiele

Sternchenbeispiele

Beispiel 1: Aufgrund des Musters *Website.slnund der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln

Beispiel 2: Aufgrund des Musters *Website/*.proj und Pfade:

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

Das Muster würde mit folgendem Muster übereinstimmen:

ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/FabrikamWebsite.proj

Fragezeichenbeispiele

Beispiel 1: Aufgrund des Musters log?.logund der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

log1.log
log2.log
log3.log

Beispiel 2: Aufgrund des Musters image.???und der folgenden Dateien:

image.tiff
image.png
image.ico

Das Muster würde mit folgendem Muster übereinstimmen:

image.png
image.ico

Beispiele für Zeichensätze

Beispiel 1: Aufgrund des Musters Sample[AC].datund der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

SampleA.dat
SampleC.dat

Beispiel 2: Aufgrund des Musters Sample[A-C].datund der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

SampleA.dat
SampleB.dat
SampleC.dat

Beispiel 3: Aufgrund des Musters Sample[A-CEG].datund der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

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

Rekursive Wildcardbeispiele

Aufgrund des Musters **/*.extund der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

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

Das folgende Beispiel wurde von Copilot generiert. Copilot wird von KI unterstützt, so dass Überraschungen und Fehler möglich sind. Weitere Informationen finden Sie in den häufig gestellten Fragen zur allgemeinen Verwendung von Copilot.

Das **/*.ext Glob-Muster ist ein leistungsfähiges rekursives Muster, das in vielen Dateisystemen und Tools (wie bash, , zsh, Python globusw.) verwendet wird, um alle Dateien abzugleichen, die im .ext aktuellen Verzeichnis und allen Unterverzeichnissen enden, unabhängig davon, wie tief geschachtelt.

Hier sind einige Beispielpfade, die übereinstimmen **/*.extwürden:

  • 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

Der ** Teil bedeutet eine beliebige Anzahl von Verzeichnissen (einschließlich Null) und *.ext bedeutet, dass jede Datei endet .ext.

Beispiele zum Ausschließen von Mustern

Aufgrund des folgenden Musters und der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

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

Beispiele für doppeltes Ausschließen

Aufgrund des folgenden Musters und der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

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

Beispiele zum Ausschließen von Ordnern

Aufgrund des folgenden Musters und der folgenden Dateien:

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

Das Muster würde mit folgendem Muster übereinstimmen:

ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml