檔案比對模式參考

Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018

模式語法

模式是新行分隔字串的字串或清單。 檔案和目錄名稱會與模式進行比較,以包含 (,或有時將它們排除在工作中) 。 您可以堆疊多個模式來建置複雜的行為。 如需完整的語法指南 ,請參閱 fnmatch

比對字元

大部分的字元會做為完全相符專案使用。 計算為「完全」相符的專案與平臺相依:Windows 檔案系統不區分大小寫,因此模式 「ABC」 會比對名為 「abc」 的檔案。 在區分大小寫的檔案系統上,該模式和名稱不相符。

下列字元具有特殊行為。

  • * 會比對檔案或目錄名稱內的零或多個字元。 請參閱 範例
  • ? 會比對檔案或目錄名稱內的任何單一字元。 請參閱 範例
  • [] 會比對檔案或目錄名稱內的集合或字元範圍。 請參閱 範例
  • ** 遞迴萬用字元。 例如, /hello/**/* 符合 的所有子代 /hello

擴充萬用字元

  • ?(hello|world) - 符合 helloworld 一次或一次
  • *(hello|world) - 零個或多個出現次數
  • +(hello|world) - 一或多個出現次數
  • @(hello|world) - 完全一次
  • !(hello|world) - 不是 helloworld

請注意,擴充 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