Как правильно отрицать zsh globbing выражений?
Я хочу перечислить все файлы, кроме тех, которые заканчиваются на owp: Поэтому я попытался:
ls -l *.(^owp)
zsh: unknown sort specifier
ls -l *(^owp)
zsh: unknown sort specifier
ls -l *[^o][^w][^p] # does not work either, missing some files
никто не работал. Как мне это сделать правильно? У моего.zshrc есть "set extendedglob".
2 ответа
Попробуйте либо:
ls -l ^*.owp
(то есть совпадать с чем угодно, кроме шаблона *.owp
)
или же:
ls -l *~*.owp
(то есть сопоставить что-либо, что соответствует шаблону *
но не совпадает *.owp
)
Увидеть man zshexpn
=> FILENAME GENERATION
=> Glob Operators
подробнее об этом.
Добавив ()
Шаблоны glob предназначены для квалификаторов glob, тогда как вы хотите использовать оператор glob.
Какие *.(^owp)
делает это:
- Совпадение всех имен файлов, заканчивающихся точкой
- если они не трубы
(^p)
, а также - сортировать спички
(o)
от "w
"=>" неизвестный спецификатор сортировки "
Увидеть man zshexpn
=> FILENAME GENERATION
=> Glob Qualifiers
подробнее об этом.
У меня возникла такая же проблема при попытке удалить ветку из git.
Пример:feature/this_feature(error_1)
Мне пришлось выйти из скобок:feature/this_feature\(error_1\)