2016-10-05 2 views
0

Я хотел бы перечислить все простые файлы, которые не являются скриптами python, в zsh. Почему следующий «код» не работает и что является правильным решением?Globbing не работает как ожидалось

ls -l *(.)~*.py 

UPDATE:

У меня есть setopt extended_glob в моем .zshrc. И

ls -ld *~*.py`` 

работает должным образом. (я добавил команду -d в команду, чтобы предотвратить распространение каталогов).

+0

У вас есть опция 'EXTENDED_GLOB', которая требуется для' ~ '? – chepner

+0

Спасибо, что спросили. Вопрос обновляется. – mcocdawc

ответ

2

Проблема заключается в том, что ~ является Глоб оператора (что также требует EXTENDED_GLOB быть установлены), в то время как (.) является Глоб классификатора, что означает, что должно быть добавлено к концу всей картины, не используются в середина. Использовать

ls *~*.py(.) 

вместо этого. То есть *~*.py - ваш шаблон (все файлы, не оканчивающиеся на .py), и (.) прилагается к результатам. (Возможно, еще один способ сказать, что операторы glob могут работать только на неквалифицированных шаблонах.)

+2

Также обратите внимание, что вы сокращаете этот шаблон до '^ *. Py (.)' – okapi

Смежные вопросы