como faço para negar corretamente as expressões zsh globbing?

17

Eu quero listar todos os arquivos, mas aqueles que terminam com owp: Por isso eu tentei:

  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

nenhum funcionou. Como faço isso de uma maneira correta? Meu .zshrc tem "set extendedglob".

    
por math 22.03.2012 / 14:59

1 resposta

24

Tente:

ls -l ^*.owp

(ou seja, corresponde a qualquer coisa, exceto o padrão *.owp )

ou:

ls -l *~*.owp

(ou seja, corresponde a qualquer coisa que corresponda ao padrão * , mas não corresponde a *.owp )

Veja man zshexpn = > FILENAME GENERATION = > Glob Operators para mais sobre isso.

Anexado () nos padrões glob são para qualificadores glob, enquanto você deseja um operador glob.

O que o *.(^owp) faz é:

  1. Corresponder todos os nomes de arquivos terminados com um ponto
  2. se não forem pipes (^p) e
  3. classifique as correspondências (o) por " w " = > "especificador de classificação desconhecido"

Veja man zshexpn = > FILENAME GENERATION = > Glob Qualifiers para mais sobre isso.

    
por 22.03.2012 / 15:09

Tags