GLOBIGNORE='**/dont_doc/**'가 작동하지 않습니다!

GLOBIGNORE='**/dont_doc/**'가 작동하지 않습니다!

dont_doc디렉터리의 모든 파일을 무시하는 glob 표현식을 만들고 싶지만 다음 GLOBIGNORE을 사용하여 이 작업을 수행하려고 하면 다음을 사용합니다.

$ GLOBIGNORE='**/dont_doc/**'
$ echo dont_doc/**
dont_doc/customBlockHelpers.hbs.js dont_doc/RoClasses.js dont_doc/RoEnums.js dont_doc/RoModules.js dont_doc/RoTypes.js

이것이 내가 원하는 일입니다:

dont_doc/doc.js #Fail
dont_doc/lol/doc.js #Fail
lol/dont_doc/doc.js #Fail
lol/dont_doc/lol/doc.js #Fail
lol.js #Succsed
index.html #Fail
oof/lol.js #Succsed

어떻게 해결할 수 있나요?

편집하다:node_modules이 폴더 도 무시하고 싶습니다.

답변1

다음을 사용해 보세요:

GLOBIGNORE='dont_doc:*/dont_doc:dont_doc/*:*/dont_doc/*'

이 디렉토리를 보는 것을 멈추지 않고 bash단지 이러한 패턴과 일치하는 전역 확장에서 항목을 제거한다는 점에 유의하십시오. 따라서 여기에는 으로 구분된 4개의 패턴이 있습니다 :. 하나는 단독으로 제외하는 패턴 dont_doc, 로 끝나는 패턴을 제외하는 패턴 /dont_doc, 로 시작하는 패턴을 제외하는 패턴 dont_doc/, 포함된 패턴을 제외하는 마지막 패턴입니다 /dont_doc/.

~이는 연산자가 수행하는 작업 과 유사합니다 (예:zsh -o extendedglobprint -rC1 -- **/*~(|*/)dont_glob(/*|)

ksh93에서는 디렉토리 항목을 FIGNORE=dont_doc무시 합니다. 와 dont_doc유사 하지만 에서 이 설정은 로 시작하는 파일 이름 숨기기도 비활성화합니다 .zsh -o extendedglob(^dont_glob/)#^dont_globksh93FIGNORE.

이는 zsh 스타일 재귀 와일드카드를 활성화하는 옵션을 활성화한 경우에만 의미가 있습니다 **.globstar

( )에서 이 옵션을 켜면 extglobksh의 확장된 glob 연산자의 하위 집합을 사용할 수 있게 되며 패턴을 다음과 같이 단축할 수 있습니다.bashshopt -s extglob

GLOBIGNORE='?(*/)dont_glob?(/*)'

또는 여러 디렉터리를 제외합니다.

GLOBIGNORE='?(*/)@(dont_glob|node_modules)?(/*)'

관련 정보