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つのパターンがあります:。 1つは、単独で除外するパターン、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)?(/*)'

関連情報