Необходимо включать каталог в исключение: print -l foo/*~foo/type_A*
или print -l foo/*~{foo/type_A*}
.
Если Вы хотите, можно заменить каталог подстановочным знаком: print -l foo/*~*/type_A*
zsh имеет ^
оператор шарика, когда EXTENDED_GLOB идет. Это походит на идеальное пригодное для Вашей установленной ситуации:
setopt extendedglob
print -rl foo/^type_A*
Это означает, “соответствуют чему-либо, кроме того, что соответствует следующему шаблону”, но его эффект ограничен частью шаблона между наклонными чертами, или между началом шаблона и первой наклонной чертой, или (как в этом случае) между последней наклонной чертой и концом шаблона.
Можно просмотреть zsh опции, в настоящее время включал с:
setopt
И отключите EXTENDED_GLOB с:
unsetopt extendedglob
foo/*~*/type_A*
работы? Делает второе*
расширьтесь до каждой папки в соответствии с рабочим каталогом, или это достаточно умный, чтобы только расшириться доfoo
? – Amelio Vazquez-Reina 22.02.2012, 18:26print *~**/*
в/
каталог), я предполагаю, что он сначала разворачивает первый шаблон и затем удаляет все соответствия, которые соответствуют к шаблону исключения. – jofel 22.02.2012, 18:36~
является чисто текстовым, часть перед~
расширяется, как это всегда было бы, затем часть после выездных матчей полос. @jofel лучший тест был быprint /**/*~*
: можно заметить, что это пересекает целое дерево, даже если это заканчивает тем, что ничего не печатало. – Gilles 'SO- stop being evil' 23.02.2012, 01:43