comment annuler correctement les expressions de globbing zsh?

18

Je veux lister tous les fichiers sauf ceux se terminant par owp: j'ai donc essayé:

  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

aucun n'a fonctionné. Comment est-ce que je fais cela correctement? Mon .zshrc a "set extendedglob".

math
la source

Réponses:

27

Essayez soit:

ls -l ^*.owp

(c'est-à-dire correspondre à tout sauf au motif *.owp)

ou:

ls -l *~*.owp

(c'est-à-dire correspondre à tout ce qui correspond au modèle *mais ne correspond pas *.owp)

Voir man zshexpn=> FILENAME GENERATION=> Glob Operatorspour en savoir plus.


Les ()modèles glob sont ajoutés aux qualificatifs glob, tandis que vous voulez un opérateur glob.

Qu'est *.(^owp)- ce que c'est:

  1. Correspond à tous les noms de fichiers se terminant par un point
  2. s'ils ne sont pas des tuyaux (^p), et
  3. trier les correspondances (o)par " w" => "spécificateur de tri inconnu"

Voir man zshexpn=> FILENAME GENERATION=> Glob Qualifierspour en savoir plus.

peth
la source
1
^ *. owp a fait le travail. whooa, pour quoi *. (^ owp) fait vraiment :)
math
9
Pour tous ceux qui ne peuvent pas faire fonctionner cela, vous devez définir l' extendedgloboption dans Zsh.
DBedrenko
7
@DBedrenko: merci! NB: fait viasetopt extendedglob
Thomas M
1
j'ai trouvé cela utile comme résumé rapide pour toute personne intéressée par les qualificatifs glob.
Wardw