🥕 저장소 (Dev & Tools)/잡다구리 (ETC)

와일드카드(Wildcard) 매칭

님아. 2026. 4. 5. 14:49

"모르는 부분을 특수문자로 대신 표현해서 패턴 매칭하는 것"


핵심 문자 3개만 기억

* — "뭐든 다 OK" (0글자 이상)

*.txt
✅ hello.txt
✅ a.txt
✅ readme.txt
❌ hello.md       ← 확장자가 다름

? — "딱 1글자만 대신" (정확히 1개)

file?.txt
✅ file1.txt
✅ filea.txt
❌ file10.txt     ← 2글자라서 안 됨
❌ file.txt       ← 0글자라서 안 됨

** — "폴더 경계도 넘어서 다 OK"

**/*.txt
✅ a.txt
✅ src/a.txt
✅ src/utils/a.txt
✅ a/b/c/d/a.txt

* 하나는 같은 폴더 안에서만
** 둘은 하위 폴더까지 전부 파고듦


[abc] / [a-z] — "이 중에 딱 1개"

[CBR]at.txt
✅ Cat.txt
✅ Bat.txt
✅ Rat.txt
❌ Hat.txt        ← H는 목록에 없음
❌ CBRat.txt      ← 1글자만 대체 가능
[0-9].txt         ← 숫자 하나로 시작
[!a-z].txt        ← 소문자 제외 (! = NOT)

* vs ** 차이 한눈에

src/
├── index.js
└── utils/
    └── helper.js

패턴 매칭 결과

src/*.js src/index.js 만 ✅
src/**/*.js src/index.js + src/utils/helper.js 둘 다 ✅

와일드카드 vs 정규식 차이

와일드카드 정규식(Regex)

주 용도 파일/경로 찾기 텍스트 패턴 분석
* 의미 뭐든 다 앞 글자 0회 이상 반복
난이도 쉬움 복잡함
예시 *.txt .*\.txt$

헷갈리는 포인트: 정규식의 *는 완전히 다른 의미!


환경별 문법 차이

환경 "뭐든 다" "딱 1글자"

Linux/Mac 쉘 * ?
SQL % _
Windows CMD * ?
.gitignore * / ** ?

실전 패턴 모음

*.log               # 모든 로그 파일
*.{jpg,png,gif}     # 이미지 파일들
**/*.java           # 하위 폴더 전체의 .java
src/**/*.ts         # src 아래 전체 .ts
file?.txt           # file 뒤에 딱 1글자
[0-9]*.txt          # 숫자로 시작하는 txt
[!.]*               # 숨김 파일(.으로 시작) 제외
!important.log      # 이 파일만 예외 처리