Самый легкий способ сделать точку соответствия шаблона шарика файлами состоит в том, чтобы использовать D
спецификатор шарика.
**/*(D)
Приоритет ~
ниже, чем /
, так **~.hg/*
**
минус соответствия для .hg/*
. Но **
является только особенным, если это прежде a /
, таким образом, здесь это соответствует файлам в текущем каталоге. Исключить .hg
и его содержание, Вам нужно
**/*~.hg~.hg/*(D)
Обратите внимание, что zsh все еще пересечет .hg
каталог, который может занять время; это - ограничение **
: Вы не можете установить список исключения непосредственно на этом уровне.
**/*(D)
(короткий для (*/)#*(D)
) включает dotfiles и dotdirs, как уже сказано.
Если Вы хотите исключить .hg
каталоги на каждом уровне, Вам нужно:
(^.hg/)#^.hg(D)
(Вам нужно setopt extendedglob
для ^
оператор)
Как уже сказано, ~pattern, исключит записи (на основе того, соответствует ли их полное расширение "шаблону" после того, как список был сгенерирован, так не остановит его для убывания в subdirs).