zsh padrão glob para corresponder todos os arquivos, exceto um, não funciona, apesar de EXTENDED_GLOB estar definido [duplicado]

1

Eu tenho um diretório contendo vários arquivos:

$ ls tdir
xx  yy zz

Estou procurando um padrão zsh glob, que se expande para todos os arquivos (não pontuais), exceto xx . Isso é o que eu tentei:

$ set -o EXTENDED_GLOB
$ echo tdir/*~xx
tdir/xx tdir/yy tdir/zz

Como podemos ver, isso não funciona; *~xx não é expandido da maneira que eu esperava. Como eu escrevo isso corretamente?

    
por user1934428 21.01.2016 / 14:29

1 resposta

4

O operador glob~filter (e-not) aplica um filtro como um padrão negativo correspondente ao resultado de todo o glob.

Isso permite coisas como:

grep foo ./**/*~*/.svn/*(.mh-1)

por exemplo.

Aqui, você precisaria:

echo tdir/*~tdir/xx

Ou:

echo tdir/*~*/xx

Ou:

echo tdir/(*~xx)

Ou use o operador de negação ^ :

echo tdir/^xx
    
por 10.02.2016 / 22:18

Tags