ファイル一致パターンのリファレンス

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