Bash 쉘에서 와일드카드(Wildcards)는 파일 이름이나 경로를 지정할 때 패턴 매칭을 사용하여 여러 파일을 한 번에 처리하거나 불특정 다수의 파일을 간단하게 지정할 수 있는 강력한 도구입니다. 와일드카드는 글로빙(Globbing)
이라고도 하며, 파일 탐색이나 관리 작업을 효율적으로 수행할 수 있게 해줍니다.
Bash 쉘의 주요 와일드카드
- 별표 (
*
) - 물음표 (
?
) - 대괄호 (
[]
) - 중괄호 (
{}
) - 물결표 (
~
) - 캐럿(
^
) - 느슨한 일치 (
?
,*
,[]
)
이들 각각의 와일드카드가 어떻게 사용되는지, 그리고 예제를 통해 자세히 살펴보겠습니다.
1. 별표 (*
)
별표(*
)는 0개 이상의 임의의 문자와 일치하는 패턴을 의미합니다. 이를 통해 특정 패턴을 포함하는 모든 파일이나 디렉터리를 쉽게 찾을 수 있습니다.
예시:
$ ls *.txt
위 명령어는 현재 디렉터리에서 .txt
로 끝나는 모든 파일을 나열합니다.
$ rm file*
위 명령어는 file
로 시작하는 모든 파일을 삭제합니다. 예를 들어, file1.txt
, file2.doc
등이 포함됩니다.
2. 물음표 (?
)
물음표(?
)는 정확히 하나의 임의의 문자와 일치합니다. 이를 통해 특정 위치의 문자 하나만이 다른 파일들을 찾을 수 있습니다.
예시:
$ ls file?.txt
위 명령어는 file
다음에 정확히 한 문자가 있고 .txt
로 끝나는 모든 파일을 나열합니다. 예를 들어, file1.txt
, fileA.txt
등이 포함될 수 있지만, file10.txt
는 포함되지 않습니다.
3. 대괄호 ([]
)
대괄호([]
)는 대괄호 안에 나열된 문자 중 하나와 일치하는 패턴을 의미합니다. 문자 범위나 개별 문자를 지정할 수 있습니다.
예시:
$ ls file[123].txt
위 명령어는 file1.txt
, file2.txt
, file3.txt
와 일치하는 파일을 나열합니다.
$ ls file[a-c].txt
위 명령어는 filea.txt
, fileb.txt
, filec.txt
와 일치하는 파일을 나열합니다.
$ ls file[!123].txt
위 명령어는 file
다음에 1
, 2
, 3
이 아닌 다른 문자가 오고 .txt
로 끝나는 모든 파일을 나열합니다. 예를 들어, file4.txt
, fileA.txt
등이 포함될 수 있습니다. (대괄호 내 !
는 해당 문자들을 제외한다는 의미입니다.)
4. 중괄호 ({}
)
중괄호({}
)는 여러 패턴을 한 번에 지정할 때 사용합니다. 이는 중괄호 안에 쉼표로 구분된 문자열 목록 중 하나와 일치합니다.
예시:
$ ls file{1,2,3}.txt
위 명령어는 file1.txt
, file2.txt
, file3.txt
와 일치하는 파일을 나열합니다.
$ mkdir project/{src,bin,doc}
위 명령어는 project
디렉터리 안에 src
, bin
, doc
디렉터리를 생성합니다.
5. 물결표 (~
)
물결표(~
)는 현재 사용자의 홈 디렉터리를 나타냅니다. 이는 특정 경로의 앞에 위치하여 사용자의 홈 디렉터리 경로로 확장됩니다.
예시:
$ cd ~
위 명령어는 사용자의 홈 디렉터리로 이동합니다.
$ ls ~/Documents
위 명령어는 사용자의 홈 디렉터리 아래 Documents
디렉터리의 파일들을 나열합니다.
6. 캐럿(^
)
캐럿(^
)는 대괄호 내에서 사용되며, 특정 문자 집합의 부정을 나타냅니다. 예를 들어, [^abc]
는 a
, b
, c
가 아닌 문자와 일치합니다.
예시:
$ ls file[^0-9].txt
위 명령어는 file
다음에 숫자(0
부터 9
까지)가 아닌 다른 문자가 오고 .txt
로 끝나는 모든 파일을 나열합니다.
7. 느슨한 일치 (?
, *
, []
)
느슨한 일치는 위의 ?
, *
, []
와일드카드들을 조합하여 특정한 패턴을 표현할 수 있는 방식입니다.
예시:
$ ls file*?.[ch]
위 명령어는 file
로 시작하고, 뒤에 임의의 문자들이 오고, 마지막 문자는 ?
로 끝나며, .c
또는 .h
로 끝나는 모든 파일을 나열합니다. 예를 들어, fileTest.c
, file123.h
등이 포함될 수 있습니다.
7. 와일드카드의 사용 예제
와일드카드는 다양한 파일 관리 작업에 유용하게 사용할 수 있습니다. 다음은 몇 가지 일반적인 사용 예입니다.
예시 1: 여러 파일 삭제
$ rm *.log
위 명령어는 현재 디렉터리에서 .log
로 끝나는 모든 파일을 삭제합니다.
예시 2: 특정 확장자를 가진 파일 나열
$ ls *.{jpg,png,gif}
위 명령어는 현재 디렉터리에서 .jpg
, .png
, .gif
확장자를 가진 모든 파일을 나열합니다.
예시 3: 특정 문자로 시작하는 파일 찾기
$ ls doc[0-9]*
위 명령어는 doc
으로 시작하고, 그 뒤에 숫자가 오며, 그 뒤에 임의의 문자가 올 수 있는 모든 파일을 나열합니다. 예를 들어, doc1.txt
, doc2.pdf
, doc9-report.doc
등이 포함될 수 있습니다.
예시 4: 홈 디렉터리의 특정 파일 접근
$ cat ~/notes.txt
위 명령어는 사용자의 홈 디렉터리에서 notes.txt
파일의 내용을 출력합니다.
8. 정규 표현식과 와일드카드의 차이점
정규 표현식(Regular Expressions)과 와일드카드는 모두 패턴 매칭을 수행하지만, 그 용도와 복잡도에서 차이가 있습니다.
- 와일드카드는 파일 이름 매칭에 주로 사용되며, 간단한 패턴 매칭을 지원합니다.
- 정규 표현식은 텍스트와 문자열 매칭에 사용되며, 복잡한 패턴 매칭을 지원합니다.
정규 표현식은 훨씬 더 강력하고 유연하지만, 와일드카드는 파일 시스템 탐색과 관련된 작업에서 더 간단하고 직관적으로 사용할 수 있습니다.
9. 와일드카드 사용 시 주의사항
- 특정 파일 보호: 와일드카드를 사용할 때는 의도하지 않은 파일이 영향을 받을 수 있으므로 주의해야 합니다. 예를 들어,
rm *
명령어는 현재 디렉터리의 모든 파일을 삭제하므로 매우 조심해서 사용해야 합니다. - 따옴표 사용: 특정 명령에서 와일드카드를 사용할 때 따옴표로 묶으면 쉘이 와일드카드를 확장하지 않습니다. 예를 들어,
echo "*"
는 별표 문자 그대로를 출력합니다. - 백업: 대량의 파일 삭제나 이동 등의 작업을 하기 전에 파일을 백업하는 것이 좋습니다.
와일드카드는 파일 관리 작업을 효율적으로 수행할 수 있는 강력한 도구이며, 이를 잘 활용하면 많은 작업을 간단하게 처리할 수 있습니다.
'언어 > Bash' 카테고리의 다른 글
[ Bash ] fc 명령어로 history 기능을 활용하기 (0) | 2024.06.30 |
---|---|
[ Bash ] 유닉스 쉘 종류 구분하기 (0) | 2024.06.30 |
[ Bash ] 백그라운드 작업 시키기 (0) | 2024.06.09 |
[ Bash ] 파이프 라인 사용하기 (0) | 2024.06.09 |
[ Bash ] 유닉스 Shell 의 역사 (0) | 2024.06.09 |