ZSH:再帰ワイルドカードは、指定された隠しディレクトリを除外します。

ZSH:再帰ワイルドカードは、指定された隠しディレクトリを除外します。

私の考えでは、グローバルパターンは次のとおりです。

**/(*|.*)

ドット()で始まったり始まったりしないすべてのフォルダとファイルを表しますが、.現在のディレクトリから始まるディレクトリはスキップされます.

グローブパターンとはどういう意味ですか?

.現在のフォルダと次に開始または開始しない可能性がある、より深いフォルダ内のすべてのファイルとフォルダ

返品:上記のような再帰的なglobパターンから特定のフォルダ(またはより良いglobサブパターン)を除外するにはどうすればよいですか?

.hg現在のレベルからフォルダを除外するために、次のことを試みました(ただし、.その文字で始まる他のフォルダは含まれています)。

**~.hg/*

しかし、より深いディレクトリに再帰的に移動することはありません。

答え1

globパターンをドットファイルと一致させる最も簡単な方法は、次のようにすることです。D グローバル予選

**/*(D)

優先順位が~低い/ため、一致が**~.hg/*差し引かれます。ただし、これはaの前にのみ特別なので、ここでは現在のディレクトリのファイルと一致します。除外するにはその内容が必要です。**.hg/***/.hg

**/*~.hg~.hg/*(D)

zsh はまだ.hgディレクトリに移動するため、時間がかかる場合があります。これは制限です**。このレベルでは除外リストを直接設定することはできません。

答え2

**/*(D)(の略語(*/)#*(D))には、上記のようにドットファイルとドッ​​トディレクトリが含まれています。

すべてのレベルでディレクトリを除外するには、次の手順を実行する.hg必要があります。

(^.hg/)#^.hg(D)

(AND演算子が必要ですsetopt extendedglob^#

前述のように、~patternアイテムは除外されます(完全な拡張が「パターン」と一致するかどうかによって)。後ろにリストは、サブディレクトリに降りるのを防ぐために作成されます。

関連情報