我有一些R
代码,一方面,我正在连接到 sftp 并尝试下载一些文件。需要下载的文件由R代码决定,可以只有一个,也可以是多个。我正在尝试使用mget
下载文件,但它似乎不起作用:
sftp> mget abc.PDF def.PDF ghi.PDF
Fetching /abc.PDF to def.PDF
它只是下载 abc.PDF 并将其作为 def.PDF 存储在本地目录中,而不是下载所有三个文件。我在做什么?
答案1
mget
使用 glob 作为参数的“源文件”部分(至少在 OpenSSH 版本 7.3 中):
sftp> ls *.pdf
foo.pdf bar.pdf
sftp> mget *.pdf
Fetching /home/jdoe/bar.pdf to bar.pdf
Fetching /home/jdoe/foo.pdf to foo.pdf
sftp>
相反,如果 glob get 捕获太多文件,您将需要以某种方式循环遍历文件并逐一获取它们。
答案2
它不起作用,因为 OpenSSHsftp
不支持它。它与(事实上,甚至没有记录在联机帮助页中)mget
相同,并且仅采用一个远程文件名参数(尽管该参数可以是一个 glob)。get
mget
help
因此,要使用 OpenSSH SFTP 客户端,您需要为get
每个文件发出一个。或者,您可以使用不同的 SFTP 客户端(例如,lftp
具有mget
您想要的功能)。或者(感谢 Gilles 的提醒)您可能会发现使用 sshfs(通过 FUSE)然后使用普通文件复制命令(cp
或 R 内置的任何命令)更方便。