如何在 ~/ 以外的文件夹中将多个文件从远程复制到本地?

How to scp multiple files from remote to local in a folder other than ~/?

我正在尝试制作一个 bash expect 脚本,它接收用户、主机、密码和文件名等输入,然后将文件从远程复制到本地。到目前为止,从我读到的内容来看,当您假设文件来自 ~/ 时,scp 从远程到本地的多个文件就可以正常工作,即:

scp -r user@host:"file1 file2 file3" .

会将 file1、file2 和 file3 从 ~/ 复制到当前工作目录中。但是我需要能够传入另一个目录作为参数,所以我的 bash 脚本看起来像这样(但不起作用,我将解释如何):

eval spawn scp -oStrictHostKeyChecking=no -oCheckHostIP=no -r $user@$host:$dir/"$file1 $file2 $file3" ~/Downloads

这在第一个文件之后不起作用; shell 在第一个文件之后引发 "No such file or directory" 错误,我认为这意味着该脚本仅适用于第一个文件的 $dir,然后返回到 ~/ 并且当然找不到那里的文件。我到处都在寻找这个问题的答案,但找不到,而且一次只做一个文件会非常乏味。

假设您的远程登录 shell 理解 Brace Expansion,这应该可行

scp $user@$host:$dir/"{$file1,$file2,$file3}" ~/Downloads

如果你想下载多个具有特定模式的文件,你可以执行以下操作,例如,如果你想要所有 zip 文件:

scp -r user@host:/path/to/files/"*.zip" /your/local/path