강력한 bash 와일드 카드 – 2.0
쉘 와일드 카드 (shell wildcard)라고하는 멋진 것들이 없다면 리눅스 커맨드 라인에서 작업하는 것은 꽤 고통 스럽습니다. 와일드 카드를 잘 사용하도록하십시오.
< 쉘 와일드 카드 란 무엇입니까? >
와일드 카드 명령 줄을 GUI 파일 관리자보다 훨씬 강력하게 만드는 쉘 기능입니다. 그래픽 파일 관리자에서 큰 파일 그룹을 선택하려면 일반적으로 마우스로 선택해야합니다. 간단 해 보이지만 어떤 경우에는 매우 실망 스러울 수 있습니다. 예를 들어, 모든 종류의 파일과 하위 디렉토리가 엄청나게 많은 디렉토리가 있고 이름 중간에 "linux"라는 단어가있는 모든 HTML 파일을 해당 큰 디렉토리에서 다른 디렉토리. 이 작업을 수행하는 간단한 방법은 무엇입니까? 디렉토리에 서로 다른 이름의 HTML 파일이 많이 포함되어있는 경우 작업은 매우 간단합니다!
Linux CLI에서이 작업은 하나의 HTML 파일 만 이동하는 것처럼 간단하게 수행 할 수 있습니다. 셸 와일드 카드. 와일드 카드는 특정 문자 패턴과 일치하는 파일 이름을 선택할 수있는 특수 문자입니다. 이렇게하면 문자 몇 개만 입력해도 큰 파일 그룹을 선택할 수 있으며 대부분의 경우 마우스로 파일을 선택하는 것보다 쉽습니다.
다음은 bash에서 가장 일반적으로 사용되는 와일드 카드 목록입니다.
와일드 카드 | 매치 |
* | 0 개 이상의 문자 |
? | 정확히 한 문자 |
[에이 비 씨 디이] | 정확하게 하나의 문자 목록 |
[ae] | 주어진 범위의 정확히 한 문자 |
[!에이 비 씨 디이] | 목록에없는 문자 |
[! ae] | 지정된 범위에없는 문자 |
{debian, linux} | 주어진 옵션에서 정확하게 하나의 전체 단어 |
파일 이름을 인수로 허용하는 명령에 와일드 카드를 사용할 수 있습니다.
< 와일드 카드 예제 >
몇 가지 예를 들어 보겠습니다. * 문자는 Linux뿐만 아니라 다른 많은 곳에서도 널리 사용되기 때문에 이미 익숙 할 것입니다. 예를 들어, 다음은 현재 디렉토리에서 모든 파일을 제거합니다.
$ rm *
다음 명령은 이름에 "linux"라는 단어가있는 모든 HTML 파일을 작업 디렉토리에서 이름이 지정된 디렉토리로 이동합니다. dir1
:
$ mv *linux*.html dir1
여러 파일 이동은 하나의 파일 만 이동하는 것처럼 간단 할 수 있습니다.
다음은로 시작하는 모든 파일을 표시합니다. d
끝내다 .txt
:
$ less d*.txt
다음 명령은 이름이로 시작하는 모든 파일을 제거합니다. junk.
그 다음에 정확히 세 문자가옵니다.
$ rm junk.???
이 명령을 사용하면 이름이로 시작하는 모든 파일 또는 디렉토리를 나열합니다 hda
, 정확히 하나의 숫자가 뒤 따른다.
$ ls hda[0-9]
여기에는 다음으로 시작하는 모든 파일 또는 디렉토리가 나열됩니다. hda
, 정확하게 두 자리 숫자가 뒤 따른다.
$ ls hda[0-9][0-9]
다음은 이름이 둘 중 하나로 시작하는 모든 파일 또는 디렉토리를 나열합니다. hd
or sd
, 그 뒤에는 한 문자 씩 a
과 c
:
$ ls {hd,sd}[a-c]
이 명령은 대문자로 시작하는 모든 파일을 디렉토리에 복사합니다. dir2
:
$ cp [A-Z]* dir2
다음으로 끝나지 않는 모든 파일을 삭제합니다. c
, e
, h
or g
:
$ rm *[!cehg]
나는이 예제들을 계속해서 사용할 수 있지만 아이디어를 얻는다. 간단한 패턴을 사용하거나 다른 와일드 카드를 결합하여 매우 복잡한 패턴을 구성 할 수 있습니다. 앞에서 말했던 것처럼 파일 이름을 인수로 허용하는 명령과 함께 사용할 수 있습니다.