come posso negare correttamente le espressioni globbing di zsh?


18

Voglio elencare tutti i file ma quelli che terminano con owp: Quindi ho provato:

  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

nessuno ha funzionato. Come posso farlo in modo corretto? Il mio .zshrc ha "set extendedglob".

Risposte:


27

Prova uno di questi:

ls -l ^*.owp

(cioè abbina qualsiasi cosa tranne lo schema *.owp)

o:

ls -l *~*.owp

(cioè abbina tutto ciò che corrisponde allo schema *ma non corrisponde *.owp)

Vedi man zshexpn=> FILENAME GENERATION=> Glob Operatorsper ulteriori informazioni al riguardo.


I ()modelli glob sono aggiunti per i qualificatori glob, mentre si desidera un operatore glob.

Quello che *.(^owp)fa è:

  1. Abbina tutti i nomi di file che terminano con un punto
  2. se non sono pipe (^p), e
  3. ordina le corrispondenze (o)per " w" => "identificatore di tipo sconosciuto"

Vedi man zshexpn=> FILENAME GENERATION=> Glob Qualifiersper ulteriori informazioni al riguardo.


1
^ *. owp ha fatto il lavoro. whooa, per quello che *. (^ owp) fa davvero :)
matematica

9
Per chiunque non riesca a farlo funzionare, è necessario impostare l' extendedglobopzione in Zsh.
DBedrenko,

7
@DBedrenko: grazie! NB: fatto tramitesetopt extendedglob
Thomas M,

1
Ho trovato questo utile come un breve riassunto per chiunque sia interessato a qualificazioni glob.
Guardare il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.