다음을 통해 공유


파일 일치 패턴 참조

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

패턴 구문

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

문자 일치

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

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

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

확장된 글로빙

  • ?(hello|world) - hello 일치하거나 0번 또는 한 번 world
  • *(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