와일드카드는 zsh에서는 실패하지만 bash에서는 작동합니다.

와일드카드는 zsh에서는 실패하지만 bash에서는 작동합니다.

zsh로 포팅하려는 bash에 별칭이 있습니다. 별칭 자체일 수도 있다고 생각했는데 지금은 그냥 와일드카드인 것 같습니다.

grep -irl --exclude=\*.{log,class,fuegoclass,dat}* --exclude-dir={build,system,lib} data

zsh에서 이러한 파일 확장자와 디렉터리를 제외하는 올바른 방법은 무엇입니까?

답변1

존재하다:

grep -irl --exclude=\*.{log,class,fuegoclass,dat}* --exclude-dir={build,system,lib} data

zsh및 에서는 먼저 로 확장된 bash다음 따옴표가 없기 때문에 각각은 와일드카드를 수행하는 패턴으로 처리됩니다.--exclude=\*.{log,class,fuegoclass,dat}*--exclude=\*.log* --exclude=\*.class* --exclude=\*.fuegoclass* --exclude=\*.dat**

예를 들어 --exclude=\*.log*현재 디렉터리의 이름을 --exclude=*.log.

일치하지 않는 glob이 있으면 zsh명령이 중단됩니다. 에서는 bash구가 자체적으로 확장됩니다.

여기서는 와일드카드가 필요하지 않으므로 모든 와일드카드 문자를 인용해야 합니다( 및 에서 오류를 지적하기 만 하면 됩니다 zsh) .bashzsh

grep -irl --exclude=\*.{log,class,fuegoclass,dat}\* --exclude-dir={build,system,lib} data

관련 정보