ssh 查找 *.png 文件并下载它们的命令是什么

ssh 查找 *.png 文件并下载它们的命令是什么

我已经连接了 OpenSSH,但是 ssh 的命令是什么来查找所有 *.png 文件并同时递归获取它们

答案1

您可以使用 列出您感兴趣的文件ssh,然后使用 下载它们scp

ssh user@host find /remote_path -iname '*.png' | 
  while read pngfile; do 
    scp user@host:"$pngfile" /local_path
  done

所有*.png在下的文件/remote_path都将被下载至/local_path,但不会创建远程目录结构(所有文件都会放在同一个目录中),因此如果您在不同的目录中有两个同名的文件,您可能会遇到问题。

编辑

远程find命令行应该这样修正:

find /remote_path -iname "'*.png'"

其中,需要内部的一对单引号来避免本地 shell 路径名扩展*,而需要外部的一对双引号来避免远程 shell 路径名扩展*

两种类型的引号可以互换,并且可以使用其他语法,如\''*.png'\'\""*.png"\""\"*.png\""

如果远程主目录中没有 .png,则这两个命令没有区别,但最好还是安全一点。

答案2

我知道的最快方法是远程创建 tar.gz,通过 SSH 传输并在本地解压:

ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -

这将适用于带有空格的文件名,并且比每个文件的scp -r速度都快得多scp

相关内容