![GLOBIGNORE='**/dont_doc/**'가 작동하지 않습니다!](https://linux55.com/image/198356/GLOBIGNORE%3D'**%2Fdont_doc%2F**'%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4!.png)
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 extendedglob
print -rC1 -- **/*~(|*/)dont_glob(/*|)
ksh93에서는 디렉토리 항목을 FIGNORE=dont_doc
무시 합니다. 와 dont_doc
유사 하지만 에서 이 설정은 로 시작하는 파일 이름 숨기기도 비활성화합니다 .zsh -o extendedglob
(^dont_glob/)#^dont_glob
ksh93
FIGNORE
.
이는 zsh 스타일 재귀 와일드카드를 활성화하는 옵션을 활성화한 경우에만 의미가 있습니다 **
.globstar
( )에서 이 옵션을 켜면 extglob
ksh의 확장된 glob 연산자의 하위 집합을 사용할 수 있게 되며 패턴을 다음과 같이 단축할 수 있습니다.bash
shopt -s extglob
GLOBIGNORE='?(*/)dont_glob?(/*)'
또는 여러 디렉터리를 제외합니다.
GLOBIGNORE='?(*/)@(dont_glob|node_modules)?(/*)'