Sdílet prostřednictvím


Referenční dokumentace vzorů porovnávání souborů

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

Syntaxe vzoru

Vzor je řetězec nebo seznam řetězců oddělených novým řádkem. Názvy souborů a adresářů se porovnávají se vzory, které se mají zahrnout (nebo někdy vyloučit) do úkolu. Složité chování můžete vytvořit tak, že naskládáte několik vzorů. Úplný průvodce syntaxí najdete v fnmatch.

Shoda znaků

Většina znaků se používá jako přesná shoda. Co se počítá jako "přesná" shoda je závislá na platformě: systém souborů Windows nerozlišuje malá a velká písmena, takže vzor "ABC" by odpovídal souboru s názvem "abc". V systému souborů rozlišujících malá a velká písmena by se tento vzor a název neshodovaly.

Následující znaky mají zvláštní chování.

  • * odpovídá nule nebo více znaků v názvu souboru nebo adresáře. Podívejte se na příklady.
  • ? odpovídá libovolnému znaku v názvu souboru nebo adresáře. Podívejte se na příklady.
  • [] odpovídá sadě nebo rozsahu znaků v názvu souboru nebo adresáře. Podívejte se na příklady.
  • ** rekurzivní zástupný znak. Například /hello/**/* odpovídá všem potomkům /hello.

Rozšířené globbing

  • ?(hello|world) - odpovídá hello nebo world nenásobí nebo jednou
  • *(hello|world) – nula nebo více výskytů
  • +(hello|world) – jeden nebo více výskytů
  • @(hello|world) – přesně jednou
  • !(hello|world) – ne hello ani world

Poznámka:

Rozšířené globy nemohou zahrnovat oddělovače adresářů. +(hello/world|other) Například není platný.

Komentáře

Vzory začínající # se považují za komentáře.

Vyloučení vzorů

Úvodní ! změní význam vzorce zahrnutí, který se má vyloučit. Můžete zahrnout vzor, vyloučit jeho podmnožinu a pak znovu zahrnout podmnožinu, která se označuje jako "prokládání".

Více ! překlopí význam. Podívejte se na příklady.

Před vzorem vyloučení musíte definovat vzor zahrnutí. Podívejte se na příklady.

Unikající

Zalamování speciálních znaků v [] lze použít k řídicím literálovým znakům v názvu souboru. Například název literálového souboru hello[a-z] může být uchvácený jako hello[[]a-z].

Lomítko

/ se používá jako oddělovač cest v Linuxu a macOS. Ve většině případů agenti Windows přijímají /. Příležitosti, kdy je nutné použít oddělovač oken (\), jsou zdokumentované.

Příklady

Základní příklady vzorů

Příklady hvězdičky

Příklad 1: Vzhledem k vzoru *Website.slna následujícím souborům:

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

Vzor by odpovídal:

ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln

Příklad 2: Vzhledem k *Website/*.proj vzoru a cestám:

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

Vzor by odpovídal:

ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/FabrikamWebsite.proj

Příklady otazníku

Příklad 1: Vzhledem k vzoru log?.loga následujícím souborům:

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

Vzor by odpovídal:

log1.log
log2.log
log3.log

Příklad 2: Vzhledem k vzoru image.???a následujícím souborům:

image.tiff
image.png
image.ico

Vzor by odpovídal:

image.png
image.ico

Příklady znakové sady

Příklad 1: Vzhledem k vzoru Sample[AC].data následujícím souborům:

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

Vzor by odpovídal:

SampleA.dat
SampleC.dat

Příklad 2: Vzhledem k vzoru Sample[A-C].data následujícím souborům:

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

Vzor by odpovídal:

SampleA.dat
SampleB.dat
SampleC.dat

Příklad 3: Vzhledem k vzoru Sample[A-CEG].data následujícím souborům:

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

Vzor by odpovídal:

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

Příklady rekurzivních zástupných znaků

Vzhledem k vzoru **/*.exta následujícím souborům:

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

Vzor by odpovídal:

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

Následující příklad vygeneroval Copilot. Copilot využívá AI, takže překvapení a chyby jsou možné. Další informace najdete v tématu Nejčastější dotazy k obecnému použití copilotu.

Vzor **/*.ext globu je výkonný rekurzivní vzor používaný v mnoha systémech souborů a nástrojích (například bash, zshPython glob, atd.), aby odpovídal všem souborům končícím v .ext aktuálním adresáři a všech podadresářích, bez ohledu na to, jak hluboko vnořené.

Tady je několik ukázkových cest, které by odpovídaly **/*.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

Část ** znamená libovolný počet adresářů (včetně nuly) a *.ext znamená jakýkoli soubor končící na .ext.

Příklady vyloučení vzorů

Vzhledem k následujícímu vzoru a následujícím souborům:

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

Vzor by odpovídal:

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

Dvojité vyloučení příkladů

Vzhledem k následujícímu vzoru a následujícím souborům:

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

Vzor by odpovídal:

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

Příklady vyloučení složek

Vzhledem k následujícímu vzoru a následujícím souborům:

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

Vzor by odpovídal:

ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml