
정의
glob은 파일 이름과 경로를 간단한 와일드카드 패턴으로 매칭하는 방식을 가리킴.
Bash, zsh 등의 shell 과 여러 프로그래밍 언어(Python의 glob 모듈 등)에서 폴더 내 파일을 찾거나 일괄 처리할 때 애용됨.
Regular Expression(정규 표현식)과 비슷한 점이 있으나, file system에서 file 및 directory를 매칭하는 용도 한정으로 사용되며 때문에 보다 단순한 편임.
- Regular Expression 은 아님: 훨씬 단순한 패턴 매칭으로 file system에서 필요한 기능 위주로 구성.
- 운영체제의 파일 시스템 규칙과 shell expansion(셸 확장)에 의존적.
“glob” 이라는 이름은
초기 유닉스에서 와일드카드가 들어간 파일 경로를
한꺼번에(전역적으로) 확장해 주던 유틸리티 이름에서 유래됨.
해당 유틸리티에서 “global”의 약칭으로 쓰였고,
이 기능을 수행하는 동작을 “globbing”이라고 부르게 된 것임.
참고: shell expansion 이란?
Shell expansion은 명령 실행 전에 쉘이 메타문자, 변수, 패턴 등을 실제 문자열로 변환하는 과정임.
- 명령어에 해당하는 프로그램이 실행되기 전에 shell이 처리함.
- globbing, tilde expansion, variable expansion, command substitution, arithmetic expansion, brace expansion등이 대표적임.
자주 쓰는 패턴
*: 임의의 문자 0개 이상.- 예)
* .txt=> 모든 txt 파일
- 예)
?: 임의의 문자 1개.- 예)
file?.log=>file1.log,fileA.log
- 예)
[abc]: 대괄호 안 문자 중 하나. bracket expression 또는 character class라고 불림.- 예)
file[12].csv=>file1.csv,file2.csv
- 예)
[a-z]: 문자 범위.- 예)
img_[a-f].png
- 예)
{a,b}: 선택 집합(shell의 brace expansion으로 shell에서만 지원이 일반적).- 예)
{jpg,png}=>jpg또는png - 이는 엄격하게는 globbing이 아니고, shell에서 수행되는 brace expansion임.
- bash, zsh 와 같은 shell이 명령어를 수행하기 전에 순수하게 문자열 수준에서 확장되는 것임.
- cmd.exe와 powershell에선 지원하지 않음.
- 예)
**: 디렉터리 재귀(셸/도구 설정에 따라 다름).- 예)
**/*.md=> 모든 하위 폴더의 md 파일
- 예)
예시
- Bash:
mv *.jpg images/=> 현재 폴더의jpg모두 이동grep -n "TODO" **/*.py=> 모든 현재 디렉토리의 하위 폴더의 파이썬 파일내에서TODO문자열 검색- Bash에선 shopt -s globstar 로 해당 옵션을 켜야 동작.
- zsh에선 기본으로 지원.
- shopt globstar 를 통해 해당 옵션이 활성화되었는지 확인 가능함. (shopt -s : 활성화된 옵션확인, shopt -u : 비활성회된 것만 확인)
grep -rn "TDDO" --indclude "./*.py"=> 위와 같은 동작이나glob의 옵션을 이용한 형태.-r옵션은 recursive (재귀)를 의미.
- Python:
import glob; print(glob.glob("**/*.csv"))=> 한단계 안의 subfolder까지만 검색.glob.glob("**/*.md", recursive=True)=> recursive하게 모든 레벨 검색.
주의 사항
- 숨김 파일(dot으로 시작,
.git등)은 기본적으로*에 매칭되지 않는 경우가 많음. glob의 재귀 동작은 셸 옵션이나 라이브러리 설정이 필요할 수 있음.- Python에서는 recursive 옵션을 True로 넘겨줘야 제대로 동작.
- 경로 구분자(
/또는 )와 인코딩, 로케일에 따라 매칭 결과가 달라질 수 있음. {a,b}브레이스 확장은 셸 기능이며 모든 언어나 라이브러리에 그대로 있지는 않을 수 있음: Python의glob은 지원 안함.
같이 보면 좋은 자료
2023.07.03 - [Python] - [Python] Regular Expression: 표현식 기초 및 요약
[Python] Regular Expression: 표현식 기초 및 요약
Regular Expression : 정규표현식 요약Regular Expression (re) 의 기본적인 operator는 다음과 같음.Basic operatorDescription.Any character except `\n` (newline)aThe character a itselfabThe string ab itselfx|yx or y\yEscapes a special characte
ds31x.tistory.com
'CE' 카테고리의 다른 글
| Shell (Python Shell 포함) 의 키보드 단축키에 대해 (0) | 2026.01.07 |
|---|---|
| Gemini CLI와 함께하는 터미널(CLI) 명령어 학습하기 (1) | 2025.12.26 |
| Font: TTF vs. OTF (1) | 2025.09.20 |
| Open Source Licenses (0) | 2025.09.19 |
| vscode 실행하기 (Windows) (0) | 2025.09.15 |