다음을 통해 공유


파일 일치 패턴 참조

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

다음 예제는 코필로트에 의해 생성되었습니다. 부조종사에는 AI가 지원되므로 놀라움과 실수가 가능합니다. 자세한 내용은 Copilot 일반 사용 FAQ를 참조하세요.

**/*.ext glob 패턴은 많은 파일 시스템 및 도구(예: bash, zshPython 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

파트는 ** 디렉터리 수(0 포함)를 의미하며 *.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