zsh glob 패턴은 하나의 파일을 제외한 모든 파일과 일치하지만 EXTENDED_GLOB가 설정되었음에도 작동하지 않습니다.

zsh glob 패턴은 하나의 파일을 제외한 모든 파일과 일치하지만 EXTENDED_GLOB가 설정되었음에도 작동하지 않습니다.

여러 파일이 포함된 디렉터리가 있습니다.

$ ls tdir
xx  yy zz

zshExcept 으로 확장되는 전역 패턴을 찾고 있습니다 xx. 내가 시도한 것은 다음과 같습니다.

$ set -o EXTENDED_GLOB
$ echo tdir/*~xx
tdir/xx tdir/yy tdir/zz

보시다시피 이는 작동하지 않습니다. *~xx예상한 대로 확장되지 않습니다. 이것을 올바르게 작성하려면 어떻게 해야 합니까?

답변1

(and-not) 연산자는 glob~filter필터를 전체 glob 결과에 대한 부정 패턴 일치로 적용합니다.

이를 통해 다음과 같은 작업이 가능해집니다.

grep foo ./**/*~*/.svn/*(.mh-1)

예를 들어.

여기에는 다음이 필요합니다.

echo tdir/*~tdir/xx

또는:

echo tdir/*~*/xx

또는:

echo tdir/(*~xx)

또는 ^대신 부정 연산자를 사용하세요.

echo tdir/^xx

관련 정보