Как правильно отрицать 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) делает это:

  1. Совпадение всех имен файлов, заканчивающихся точкой
  2. если они не трубы (^p) , а также
  3. сортировать спички (o) от " w "=>" неизвестный спецификатор сортировки "

Увидеть man zshexpn => FILENAME GENERATION => Glob Qualifiers подробнее об этом.

У меня возникла такая же проблема при попытке удалить ветку из git.

Пример:feature/this_feature(error_1)

Мне пришлось выйти из скобок:feature/this_feature\(error_1\)

Другие вопросы по тегам