como filtrar por asterisco ou expressão similar por rsync em zsh

2

Eu tenho muitos arquivos nomeados como:

/var/log/foo/2014-07-06-01.log
...
/var/log/foo/2014-07-20-04.log

Todos os dias tenho vários arquivos de log e quero baixar os arquivos de log do dia especificado:

$ rsync server:/var/log/foo/2014-07-06-*.log .

Eu recebi zsh: no matches found error.

Eu encontrei no manual que eu posso filtrar por extensão, mas não consegui encontrar como filtrar o nome do arquivo em caso assim.

Existe uma maneira fácil de usar a filtragem com rsync ?

    
por ironsand 06.07.2014 / 16:36

2 respostas

2

Você precisa escapar dos caracteres especiais, por exemplo,

$ rsync server:/var/log/foo/2014-07-06-\*.log .

ou

$ rsync 'server:/var/log/foo/2014-07-06-*.log' .

Ou melhor, instale url-quote-magic , por exemplo

autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
zstyle ':urlglobber' url-other-schema http https ftp mailto

para que o zsh faça isso automaticamente por você. Você pode querer adicionar outros esquemas de URL ...

EDIT: Como alternativa, você pode unsetopt NOMATCH , para que um erro ocorra novamente no comportamento do shell POSIX, mas eu o desencorajaria a fazer isso, porque poderia levar a resultados inesperados em alguns casos.

    
por 06.07.2014 / 17:35
1

Outra maneira:

$ noglob rsync server:/var/log/foo/2014-07-06-*.log .

Da página de manual zsh :

noglob   Filename  generation  (globbing)  is not performed on any of the
         words.
    
por 06.07.2014 / 17:41