ファイル一致パターンのリファレンス
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
パターンの構文
パターンは、1 つの文字列または改行で区切られた文字列のリストです。 タスクに含める (場合によっては除外する) ため、ファイル名とディレクトリ名がパターンと比較されます。 複数のパターンを積み重ねることで、複雑な動作を構築できます。 完全な構文ガイドについては、fnmatch に関するページをご覧ください。
文字の一致
ほとんどの文字は完全一致として使われます。 "正確な" 一致と見なされるものはプラットフォームによって異なります。Windows ファイルシステムでは大文字と小文字が区別されないため、パターン "ABC" は "abc" というファイルと一致します。 大文字と小文字の区別があるファイルシステムでは、そのパターンと名前は一致しません。
次の文字には特別な動作があります。
*
は、ファイル名またはディレクトリ名内の 0 個以上の文字と一致します。 例を参照してください。?
は、ファイル名またはディレクトリ名内の任意の 1 文字と一致します。 例を参照してください。[]
は、ファイル名またはディレクトリ名内の文字のセットまたは範囲と一致します。 例を参照してください。**
は再帰的なワイルドカードです。 たとえば、/hello/**/*
は、/hello
のすべての子孫と一致します。
拡張 glob
?(hello|world)
-hello
またはworld
と 0 または 1 回一致*(hello|world)
- 0 回以上の出現+(hello|world)
- 1 回以上の出現@(hello|world)
- 厳密に 1 回!(hello|world)
-hello
またはworld
ではない
拡張 glob は、ディレクトリの区切りをまたがることはできません。 たとえば、+(hello/world|other)
は無効になります。
説明
#
で始まるパターンは、コメントとして扱われます。
パターンの除外
先頭に !
を付けると、包含パターンの意味が除外に変わります。
パターンを包含し、そのサブセットを除外してから、そのサブセットを再び包含することができます。これは "インターリーブ" パターンと呼ばれます。
複数の !
は意味を交互に切り替えます。 例を参照してください。
除外の前に包含パターンを定義する必要があります。 例を参照してください。
エスケープ
[]
で特殊文字を囲むと、ファイル名内のリテラル 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