![使用 PuTTY 查找并下载文件](https://linux22.com/image/1271512/%E4%BD%BF%E7%94%A8%20PuTTY%20%E6%9F%A5%E6%89%BE%E5%B9%B6%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6.png)
我正在尝试使用 PuTTY 通过 SSH 连接到 Mac 并下载使用 find 命令指定的一些文件。这些文件中有空格,可能会导致问题,而且我不确定如何指定本地 Windows 路径。
我正在尝试这样的事情,但迄今为止没有成功:
find . -iname "*searchtext*" | xargs -0 scp user@host:{} localpath
有任何想法吗?
如果无法使用一行,我不介意使用可以通过 PuTTY 调用的 Bash 脚本?
答案1
最好只创建远程服务器上文件的 zip 或 tgz 文件
zip found-files.zip $(find . -iname "*searchtext*")
然后只需使用韓國下载 found-files.zip 文件。Winscp 将进行与 putty 相同的身份验证(密码或运行时使用 pagent)。如果您更喜欢 dos 命令提示符,则可以使用 pscp
答案2
我正在尝试使用 PuTTY 通过 SSH 连接到 Mac 并使用 find 命令下载一些指定的文件。
您是否尝试将文件下载至本地 Windows 系统?
请记住,PuTTY 是一个 SSH 客户端。它所做的就是将输入的文本发送到您的 Mac 并显示收到的输出。因此,当您scp
像这样运行时,它可以运行在 Mac 上并且文件名必须按照 Mac 所见的方式指定。
如果您想将文件从 Mac 传输到 Windows,那么就是scp macpath user@windowshost:windowspath
。 (您似乎在示例命令中将其反转了。)
这也意味着您的 Windows 计算机需要安装具有 SCP 功能的 SSH 服务器,并且它必须允许传入的 SSH 连接。
我不确定如何指定本地 Windows 路径。
这取决于您在 Windows 上安装的 SSH 服务器。(请参阅上文。)但通常x:\dir\file
可以转换为/x/dir/file
。阅读手册。
文件中有空格,可能会导致问题
是的,这会导致 出现问题xargs
。您使用 找到了正确的方向xargs -0
,但您需要对find
–find .... -print0
或执行相同的操作find .... -printf "%p\0"
。
如果 Mac OS X 中的 版本find
既不支持-print0
也不支持-printf
,则可以使用换行符作为分隔符。在这种情况下,不要为 增加任何特殊选项find
,而是将其更改xargs -0
为xargs -d '\n'
。
的更好替代方案xargs
是find -exec
。
xargs -0 scp user@host:{} localpath
这里还有一个错误。默认情况下xargs
,不是用文件名替换{}
;您必须使用 来明确告诉它-I "{}"
。
您可能将其与-exec
中的选项混淆了find
,其中做像这样工作:
find . -iname "*searchtext*" -exec scp user@host:{} localpath \;
上面,我保留了scp
与原始示例完全相同的参数顺序。但正如我之前所说,这是不正确的。