檔案比對模式參考
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
模式語法
模式是換行符分隔字串的字串或清單。 檔案和目錄名稱會與工作中包含(或有時排除)的模式進行比較。 您可以堆疊多個模式來建立複雜的行為。 如需完整的語法指南,請參閱 fnmatch 。
比對字元
大部分字元會作為完全相符專案使用。 計算為「完全」相符的專案與平臺相依:Windows 檔案系統不區分大小寫,因此模式 “ABC” 會比對名為 “abc” 的檔案。 在區分大小寫的檔案系統上,該模式和名稱不會相符。
下列字元具有特殊行為。
*
比對檔案或目錄名稱內的零個或多個字元。 請參閱 範例。?
會比對檔案或目錄名稱內的任何單一字元。 請參閱 範例。[]
會比對檔案或目錄名稱內的字元集或範圍。 請參閱 範例。**
遞迴通配符。 例如,/hello/**/*
符合的所有子系/hello
。
擴充的擷取
?(hello|world)
- 比對hello
或world
零或一次*(hello|world)
- 零或多個出現次數+(hello|world)
- 一或多個出現次數@(hello|world)
- 正好一次!(hello|world)
- 不是hello
或world
請注意,擴充的 Glob 無法跨越目錄分隔符。 例如,+(hello/world|other)
無效。
註解
開頭 #
的模式會被視為批注。
排除模式
前置 !
變更要排除的 include 模式的意義。
您可以包含模式、排除其中的子集,然後重新包含的子集:這稱為「交錯」模式。
多個 !
翻轉意義。 請參閱 範例。
您必須在排除模式之前定義 include 模式。 請參閱 範例。
逸出
中的 []
換行特殊字元可用來逸出檔名中的常值 glob 字元。 例如,常值檔名 hello[a-z]
可以逸出為 hello[[]a-z]
。
斜線
/
在Linux和macOS上做為路徑分隔符。
大部分時候,Windows 代理程式都接受 /
。
必須記錄使用 Windows 分隔符 (\
) 的場合。
範例
基本模式範例
星號範例
範例 1: 假設模式 *Website.sln
和檔案:
ConsoleHost.sln
ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln
模式會比對:
ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln
範例 2: 假設模式 *Website/*.proj
和路徑:
ContosoWebsite/index.html
ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/index.html
FabrikamWebsite/FabrikamWebsite.proj
模式會比對:
ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/FabrikamWebsite.proj
問號範例
範例 1: 假設模式 log?.log
和檔案:
log1.log
log2.log
log3.log
script.sh
模式會比對:
log1.log
log2.log
log3.log
範例 2: 假設模式 image.???
和檔案:
image.tiff
image.png
image.ico
模式會比對:
image.png
image.ico
字元集範例
範例 1: 假設模式 Sample[AC].dat
和檔案:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
模式會比對:
SampleA.dat
SampleC.dat
範例 2: 假設模式 Sample[A-C].dat
和檔案:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
模式會比對:
SampleA.dat
SampleB.dat
SampleC.dat
範例 3: 假設模式 Sample[A-CEG].dat
和檔案:
SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
SampleE.dat
SampleF.dat
SampleG.dat
SampleH.dat
模式會比對:
SampleA.dat
SampleB.dat
SampleC.dat
SampleE.dat
SampleG.dat
遞迴通配符範例
指定模式 **/*.ext
與檔案:
sample1/A.ext
sample1/B.ext
sample2/C.ext
sample2/D.not
模式會比對:
sample1/A.ext
sample1/B.ext
sample2/C.ext
排除模式範例
假設模式:
*
!*.xml
和 檔案:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
模式會比對:
ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb
雙重排除
假設模式:
*
!*.xml
!!Fabrikam.xml
和 檔案:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
模式會比對:
ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml
資料夾排除
假設模式:
**
!sample/**
和 檔案:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
sample/Fabrikam.dll
sample/Fabrikam.pdb
sample/Fabrikam.xml
模式會比對:
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml