[2-57]
구성된 문자 세트는 2
, 3
, 4
, 5
및 7
, 다른 모든 zsh을 와일드 카드 및 정규 표현식 구문 거기. 글로브 패턴 *[2-57]
은 마지막 문자가 5 자리 중 하나 인 모든 파일 이름과 일치합니다.
[m,n]
glob 한정자 의 구문을 잘못 기억하고 있다고 생각합니다 . 전역 한정자는 항상 패턴 끝에서 괄호 안에 들어가며 범위 구분 기호는 쉼표입니다. 패턴 *([2,57])
은 2, 3,…, 57 번째 일치로 확장됩니다. 기본 확장 순서는 사전 식입니다 ( numeric_glob_sort
옵션이 설정된 경우 숫자를 숫자로 정렬하는 특별한 마법 이 있습니다). o
또는 O
glob 한정자로 제어 할 수 있습니다 (예 : *(om[2,57])
가장 최근 파일 하나를 제외한 57 개의 최신 파일과 일치).
for x in /foo/bar/*([2,57]); do print $x; done
요청한 내용은 아니지만 향후 독자에게 유용하고 유용 할 수 있습니다. 파일이 존재하는지 여부를 2-57로 열거하려면 범위 중괄호 표현식을 사용할 수 있습니다 . 이 기능은 bash 및 ksh에도 있습니다.
echo hello{2..57}
이름에 2에서 57 사이의 숫자가 포함 된 파일을 일치 시키려면 패턴을 사용할 수 있습니다 <2-57>
. 이것은 zsh에만 해당됩니다.
$ ls
file1 file2 file3 file57 file58
$ echo file<2-57>
file2 file3 file57
같은 패턴 *<2-57>
은 *
숫자와도 일치 할 수 있기 때문에 예상 한대로 수행하지 않을 수 있습니다. 예를 들어, file58
일치 *<2-57>
하여, file5
일치하는 *
부분과 8
일치하는 <2-57>
부분. 패턴 *[^0-9]<2-57>
은이 문제를 피합니다.