Wie negiere ich zsh globbing Ausdrücke richtig?

18

Ich möchte alle Dateien auflisten, die aber mit owp enden. Daher habe ich versucht:

  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

keiner hat funktioniert. Wie mache ich das richtig? Mein .zshrc hat "extendedglob gesetzt".

Mathematik
quelle

Antworten:

27

Versuchen Sie entweder:

ls -l ^*.owp

(dh stimmen mit nichts außer dem Muster überein *.owp)

oder:

ls -l *~*.owp

(dh alles, was mit dem Muster übereinstimmt, *aber nicht übereinstimmt *.owp)

Siehe dazu man zshexpn=> FILENAME GENERATION=> Glob Operators.


()In Glob-Mustern angefügt sind für Glob-Qualifizierer, während Sie einen Glob-Operator möchten.

Was *.(^owp)macht ist:

  1. Finde alle Dateinamen, die mit einem Punkt enden
  2. wenn sie keine Pfeifen sind (^p), und
  3. sortiere die Übereinstimmungen (o)nach " w" => "unbekanntem Sortierbezeichner"

Siehe dazu man zshexpn=> FILENAME GENERATION=> Glob Qualifiers.

peth
quelle
1
^ *. owp hat den Job gemacht. whooa, für was *. (^ owp) wirklich tut :)
math
9
Für alle, die dies nicht zum extendedglobLaufen bringen können, müssen Sie die Option in Zsh setzen.
DBedrenko
7
@DBedrenko: danke! NB: erledigt übersetopt extendedglob
Thomas M
1
Ich fand dies nützlich als kurze Zusammenfassung für alle, die an Glob-Qualifikanten interessiert sind.
Wardw