본문 바로가기

언어/Bash

[ Bash ] 와일드 카드 사용하기

반응형

Bash 쉘에서 와일드카드(Wildcards)는 파일 이름이나 경로를 지정할 때 패턴 매칭을 사용하여 여러 파일을 한 번에 처리하거나 불특정 다수의 파일을 간단하게 지정할 수 있는 강력한 도구입니다. 와일드카드는 글로빙(Globbing)이라고도 하며, 파일 탐색이나 관리 작업을 효율적으로 수행할 수 있게 해줍니다.

Bash 쉘의 주요 와일드카드

  1. 별표 (*)
  2. 물음표 (?)
  3. 대괄호 ([])
  4. 중괄호 ({})
  5. 물결표 (~)
  6. 캐럿(^)
  7. 느슨한 일치 (?, *, [])

이들 각각의 와일드카드가 어떻게 사용되는지, 그리고 예제를 통해 자세히 살펴보겠습니다.

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. 와일드카드 사용 시 주의사항

  1. 특정 파일 보호: 와일드카드를 사용할 때는 의도하지 않은 파일이 영향을 받을 수 있으므로 주의해야 합니다. 예를 들어, rm * 명령어는 현재 디렉터리의 모든 파일을 삭제하므로 매우 조심해서 사용해야 합니다.
  2. 따옴표 사용: 특정 명령에서 와일드카드를 사용할 때 따옴표로 묶으면 쉘이 와일드카드를 확장하지 않습니다. 예를 들어, echo "*"는 별표 문자 그대로를 출력합니다.
  3. 백업: 대량의 파일 삭제나 이동 등의 작업을 하기 전에 파일을 백업하는 것이 좋습니다.

와일드카드는 파일 관리 작업을 효율적으로 수행할 수 있는 강력한 도구이며, 이를 잘 활용하면 많은 작업을 간단하게 처리할 수 있습니다.

반응형