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 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)?(/*)'