як я правильно заперечую вирази zsh globbing?


18

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

Відповіді:


27

Спробуйте будь-що:

ls -l ^*.owp

(тобто відповідати будь-чому, крім шаблону *.owp)

або:

ls -l *~*.owp

(тобто узгоджуйте все, що відповідає шаблону, *але не відповідає *.owp)

Докладніше про це див. У розділі man zshexpn=> FILENAME GENERATION=> Glob Operators.


Додані ()у шаблони глобусу призначені для глобальних кваліфікуючих осіб, тоді як ви хочете, щоб глобальний оператор.

Що *.(^owp)таке:

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

Докладніше про це див. У розділі man zshexpn=> FILENAME GENERATION=> Glob Qualifiers.


1
^ *. Овп зробив цю роботу. whooa, для чого *. (^ owp) дійсно робить :)
математика

9
Для тих, хто не може змусити це працювати, вам потрібно встановити extendedglobпараметр у Zsh.
Д.Бедренко

7
@DBedrenko: спасибі! NB: зроблено черезsetopt extendedglob
Thomas M

1
Я вважаю це корисним як короткий підсумок для всіх, хто цікавиться глобальними кваліфікаторами.
опік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.