본문 바로가기
프로그래밍

/**/* 은 무슨 뜻일까? Glob 패턴에 대해서 알아보자

by bantomak 2024. 10. 23.

Glob 패턴이란 무엇인가?

Glob 패턴은 와일드카드 패턴을 지정된 패턴과 일치하는 경로, 이름, 목록으로 확장할 수 있는 패턴을 말한다. 초기 버전의 Linux에서 명령 인터프리터는 이러한 문자를 명령에 대한 따옴표가 없는 인수로 확장하는 프로그램에 의존했다.

이 명령은 나중에 라이브러리 함수로 제공되었으며, 현재 쉘을 포함한 수많은 프로그램에서 사용된다 

  • Node.js
  • Go
  • Java
  • Haskell
  • Python
  • Ruby
  • PHP 등등

별표 Asterisks(*)

가장 일반적으로 사용되는 와일카드이다. 여러 가지 방법으로 사용되지만 보통 문자열의 일부와 같은 여러 문자를 매칭하는데 사용된다.

  •  *  - Linux에서는 슬래시를 제외한 모든 항목과 일치한다. Windows에서는 백슬래시와 슬래시와 일치하지 않는다.
  •  **  - 현재 디텍터리에 속하는 0개 이상의 디렉터리와 재귀적으로 일치한다.
  • *(pattern_list) - 위의 패턴 목록에 패턴이 0개 또는 1개 있는 경우에만 일치한다.

실제 예제로 알아보자

윈도우라면 커맨드라인 혹은 파워쉘을 통해서 직접 예제를 실행해 보면서 비교해 보자.

// 현재 디렉토리에 있는 모든 파일 표시
ls *

// 현재 디렉토리에 속하는 모든 폴더에 있는 모든 파일 표시
ls **/*

// temp 폴더 내에 있는 모든 파일 표시
ls temp/*

// temp 폴더 하위에 속하는 모든 폴더에 있는 모든 파일 표시
ls temp/**/*

확장자 조건을 추가하면 아래와 같이 검색이 가능하다.

 

// 현재 디렉토리에 있는 모든 .txt 확장자 파일 표시
ls *.txt

// 현재 디렉토리에 속하는 모든 폴더에 있는 모든 .txt 확장자 파일 표시
ls **/*.txt

// temp 폴더 내에 있는 모든 .txt 확장자 파일 표시
ls temp/*.txt

// temp 폴더 하위에 속하는 모든 폴더에 있는 모든 .txt 확장자 파일 표시
ls temp/**/*.txt

참고 사이트

 

A Beginner's Guide: Glob Patterns | Malik Browne

Globs, also known as glob patterns are patterns that can expand a wildcard pattern into a list of pathnames that match the given pattern.

www.malikbrowne.com

댓글