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".

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.