使用 scp 复制时如何使用通配符 (*)?

使用 scp 复制时如何使用通配符 (*)?

*当我在路径中使用字符时,为什么无法使用 scp 进行复制?

scp SERVERNAME:/DIR/* .

SCP 需要什么配置才能允许*在路径中?

更新:问题不在服务器端; pscp 正在尝试使用 SCPv1,这就是错误消息的原因:

scp 命令行和有关名为 * 的文件的错误消息

答案1

您需要传递一个文字转义以scp避免远程计算机将其*视为 glob(请注意它是双引号的):

scp 'SERVERNAME:/DIR/\*' .

答案2

我发现帕特里克的建议是正确的,尽管克里斯的回答让我走上了正轨。使用引号,然后星号前就不需要反斜杠了。

  • 带引号+反斜杠:

    $ scp 'SERVERNAME:/tmp/file_num\*' .
    
    scp: /tmp/file_num*.csv: No such file or directory
    
  • 仅包含引号:

    $ scp 'SERVERNAME:/tmp/file_num*' .
    
    judgments_for_job_171642.csv 100%   32KB  32.0KB/s   00:00    
    judgments_for_job_172394.csv 100%  548KB 182.6KB/s   00:03  
    

答案3

为了以避免通配符你想要两个 - 单引号和转义星号:

scp 'SERVERNAME:/DIR/\*' ./

如果你想使用通配符使用单引号或仅转义星号:

scp 'SERVERNAME:/DIR/*' ./
# or
scp SERVERNAME:/DIR/\* ./

好像scp只支持通配符文件名但不是为了目录名

答案4

其实只是-r在类似的情况下使用。特别是当您在脚本中使用变量时。

例子:

SERVERNAME="[email protected]"

scp -r $SERVERNAME:/DIR/ ./

相关内容