다음 파일이 있다고 가정 해보십시오.
|-- bar `-- foo |-- type_A_1 |-- type_A_2 |-- type_B_1 |-- type_B_2 |-- type_B_xx |-- type_B_xx `-- something_else
나는 다음 명령을 생각했다
print -l foo/*~{type_B*}
인쇄 할 모든 것을 에서 foo
제외 로 시작하는 것들 type_B
이지만, 대신은 foo는 아래에 모든 것을 출력하지 않습니다
foo/type_A_1
foo/type_A_2
foo/type_B_1
foo/type_B_2
foo/type_B_xx
foo/something_else
나는 또한 print -l foo/*~type_B
같은 것을 시도 하고 얻었다.
~
zsh에서 예외 와일드 카드는 어떻게 작동합니까?
답변
디렉토리를 예외에 포함시켜야합니다 : print -l foo/*~foo/type_A*
또는 print -l foo/*~{foo/type_A*}
.
원하는 경우 디렉토리를 와일드 카드로 바꿀 수 있습니다.
print -l foo/*~*/type_A*
답변
^
EXTENDED_GLOB가 켜져있을 때 zsh 는 glob 연산자를 갖 습니다. 명시된 상황에 완벽하게 맞는 것 같습니다.
setopt extendedglob
print -rl foo/^type_A*
“다음 패턴과 일치하는 것을 제외하고는 무엇이든 일치”를 의미하지만 그 효과는 슬래시 사이 또는 패턴의 시작과 첫 번째 슬래시 사이 (또는이 경우와 같이) 마지막 부분 사이의 패턴 부분으로 제한됩니다. 슬래시와 패턴의 끝.
다음 과 같이 현재 활성화 된 zsh 옵션을 볼 수 있습니다 .
setopt
다음을 사용하여 EXTENDED_GLOB를 비활성화하십시오.
unsetopt extendedglob