17

Я хочу перечислить все файлы, кроме тех, которые заканчиваются на 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".

1 ответ1

24

Попробуйте либо:

ls -l ^*.owp

(то есть совпадать с чем угодно, кроме шаблона *.owp)

или же:

ls -l *~*.owp

(то есть соответствует чему-либо, что соответствует шаблону * но не соответствует *.owp)

Смотрите man zshexpn => FILENAME GENERATION => Glob Operators для получения дополнительной информации об этом.


Appended () в шаблонах glob предназначен для квалификаторов glob, тогда как вам нужен оператор glob.

*.(^owp) делает:

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

Смотрите man zshexpn => FILENAME GENERATION => Glob Qualifiers для получения дополнительной информации об этом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .