有没有办法在shell脚本上下载与SFTP模式匹配的文件?

时间:2017-10-24 22:57:01

标签: linux shell sftp

我试图使用

在Linux服务器上通过SFTP下载多个文件
sftp -o IdentityFile=key <user>@<server><<END
    get -r folder
    exit
END

将下载文件夹中的所有内容。 findgrep似乎是无效命令,因此也适用于循环。

我需要下载名称中包含字符串的文件,例如

  

test_0.txt

     

test_1.txt

     

但没有file.txt

2 个答案:

答案 0 :(得分:1)

您需要使用sftp吗?像rsync这样的工具在ssh上运行,具有灵活的包含/排除选项。例如:

rsync -a <user>@<server>:folder/ folder/ \
  --include='test_*.txt' --exclude='*.txt'

这需要在远程系统上安装rsync,但这些日子非常普遍。如果rsync不可用,您可以使用tar执行类似操作:

ssh <user>@<server> tar -cf- folder/ | tar -xvf- --wildcards '*/test_*.txt'

这会远程识别所有文件,但之后只会在接收方提取与目标模式匹配的文件。

答案 1 :(得分:0)

你真的需要-r开关吗? folder中是否有任何子目录?你没有提到这一点。

如果没有子目录,您可以使用带文件掩码的简单get

cd folder
get *test*