zsh에서 숫자 범위를 중요하지 않은 0과 일치시킵니다.

zsh에서 숫자 범위를 중요하지 않은 0과 일치시킵니다.

내 디렉토리에 다음과 같은 파일이 있습니다.

booklet-001.pdf
booklet-002.pdf
booklet-003.pdf
booklet-997.pdf
booklet-998.pdf
booklet-999.pdf

음, 번호가 079에서 256인 파일을 일치시키고 싶습니다. 하지만 zsh의 정규식 일치로 이를 수행하는 방법은 무엇입니까?

답변1

그렇다면성냥파일 목록(존재 여부에 관계없이)을 생성하는 대신 glob 연산자를 사용하고 싶습니다 <x-y>.

print -rC1 -- booklet-<79-256>.pdf

<79-256>79에서 256 사이의 숫자를 나타내는 ASCII 10진수 시퀀스와 일치하므로 79또는 ... 079와 일치합니다.0000000079

(match ) 다음에 가 오기 때문에 *<79-256>.pdfon 에서도 일치 합니다 . 루트 이름이 79에서 256 사이의 숫자로 끝나는 PDF 파일과 일치하도록 변경합니다 .booklet-456789.pdfbooklet-456789<79-256>.pdf(|*[^0-9])<79-256>.pdf

booklet-079.pdf일치하지만 일치하지 않는 booklet-79.pdfglob의 경우 booklet-0079.pdf(after set -o extendedglob)를 사용합니다.

print -rC1 -- booklet-(<79-256>~^???).pdf

(<79-256> 아니 아니 ???)

답변2

zsh에서 다음을 수행하십시오.

ls booklet-{079..256}.pdf

테스트해 보세요. 작동합니다!

관련 정보