我有很多文件,名称如下:
/var/log/foo/2014-07-06-01.log
...
/var/log/foo/2014-07-20-04.log
每天我都有几个日志文件,我想下载指定一天的日志文件:
$ rsync server:/var/log/foo/2014-07-06-*.log .
但是我zsh: no matches found
出错了。
我在手册中发现我可以按扩展名进行过滤,但我找不到如何在这种情况下过滤文件名。
有没有简单的方法来使用过滤rsync
?
答案1
您需要转义特殊字符,例如
$ rsync server:/var/log/foo/2014-07-06-\*.log .
或者
$ rsync 'server:/var/log/foo/2014-07-06-*.log' .
或者更好,安装url-quote-magic
,例如
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
zstyle ':urlglobber' url-other-schema http https ftp mailto
这样 zsh 就会自动为你做这件事。您可能想要添加其他 URL 方案...
编辑:或者,您可以unsetopt NOMATCH
,以便错误回退到 POSIX shell 行为,但我不鼓励您这样做,因为在某些情况下可能会导致意外结果。
答案2
其他方式:
$ noglob rsync server:/var/log/foo/2014-07-06-*.log .
从zsh
手册页:
noglob Filename generation (globbing) is not performed on any of the
words.