파일 일치 패턴 참조

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

패턴 구문

패턴은 줄로 구분된 문자열의 문자열 또는 목록입니다. 파일 및 디렉터리 이름은 작업에 포함(또는 경우에 따라 제외)하는 패턴과 비교됩니다. 여러 패턴을 쌓아 복잡한 동작을 구축할 수 있습니다. 전체 구문 가이드는 fnmatch를 참조하세요.

문자 일치

대부분의 문자는 정확한 일치 항목으로 사용됩니다. "정확한" 일치 항목으로 계산되는 것은 플랫폼에 따라 달라집니다. Windows 파일 시스템은 대/소문자를 구분하지 않으므로 패턴 "ABC"는 "abc"라는 파일과 일치합니다. 대/소문자를 구분하는 파일 시스템의 경우 해당 패턴과 이름이 일치하지 않습니다.

다음 문자에는 특별한 동작이 있습니다.

  • * 는 파일 또는 디렉터리 이름 내에서 0개 이상의 문자와 일치합니다. 를 참조하세요.
  • ? 는 파일 또는 디렉터리 이름 내의 모든 단일 문자와 일치합니다. 를 참조하세요.
  • [] 는 파일 또는 디렉터리 이름 내의 문자 집합 또는 범위와 일치합니다. 를 참조하세요.
  • **재귀 야생카드. 예를 들어 .의 /hello/**/* 모든 하위 항목과 일치합니다 /hello.

확장된 글로빙

  • ?(hello|world) - 일치 hello 또는 world 0 또는 한 번
  • *(hello|world) - 0개 이상의 발생
  • +(hello|world) - 하나 이상의 발생
  • @(hello|world) - 정확히 한 번
  • !(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