次の方法で共有


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

Azure DevOps Services |Azure DevOps Server 2022 および Azure DevOps Server 2019

パターンの構文

パターンは、改行で区切られた文字列の文字列またはリストです。 ファイル名とディレクトリ名は、タスクに含める (または除外する) パターンと比較されます。 複数のパターンを積み重ねて複雑な動作を構築できます。 完全な構文ガイドについては、fnmatch を参照してください。

文字の一致

ほとんどの文字は完全一致として使用されます。 "正確な" 一致としてカウントされるものはプラットフォームに依存します。Windows ファイルシステムでは大文字と小文字が区別されないため、パターン "ABC" は "abc" というファイルと一致します。 大文字と小文字が区別されるファイルシステムでは、そのパターンと名前が一致しません。

次の文字は特殊な動作をします。

  • * は、ファイル名またはディレクトリ名内の 0 個以上の文字と一致します。 例を参照してください。
  • ? は、ファイル名またはディレクトリ名内の任意の 1 文字と一致します。 例を参照してください。
  • [] は、ファイル名またはディレクトリ名内の文字のセットまたは範囲と一致します。 例を参照してください。
  • 再帰ワイルドカード ** します。 たとえば、/hello/**/*/helloのすべての子孫と一致します。

拡張 globbing

  • ?(hello|world) - hello または 0 回または 1 回 world 一致します
  • *(hello|world) - 0 回以上出現
  • +(hello|world) - 1 つ以上の出現回数
  • @(hello|world) - 1 回だけ
  • !(hello|world) - helloworld ではない

拡張 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

*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

次の例は、Copilot によって生成されました。 Copilot では AI を利用しているため、想定外のことや間違いが起こる可能性があります。 詳細については、「Copilot の一般的な使用に関する FAQ」を参照してください。

**/*.ext glob パターンは、多くのファイル システムやツール (bashzshPython glob など) で使用される強力な再帰パターンで、入れ子にしても、現在のディレクトリとすべてのサブディレクトリの.extで終わるすべてのファイルと一致します。

**/*.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

**部分は任意の数のディレクトリ (ゼロを含む) を意味し、*.ext.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