我如何 scp 一个带有空格的文件名?

我如何 scp 一个带有空格的文件名?

我在使用从远程计算机传输文件时遇到了一些困难scp。问题显然与文件所在目录的名称有关。它们位于名为 的 CD 驱动器上(和photos 4之间有一个空格)。当我尝试传输时,我使用了以下命令:photos4

scp [remote username]@192.168.1.X:/media/[remote username]/photos\ 4/file.jpg /home/[username]/Pictures

但是,我收到一条错误消息,提示No directory: /media/[remote username]/photos。我以为反斜杠会转义空格,这样目录就会被读为photos 4

有人可以告诉我我在这里做错了什么吗?

(顺便说一句,我将其复制file.jpg到远程计算机的桌面,然后运行以下命令:

scp [remote username]@192.168.1.X:/home/[remote username]/Desktop/file.jpg /home/[username]/Pictures

并且成功了,所以转义序列似乎是罪魁祸首。我就是搞不清楚它到底出了什么问题。)

答案1

目录或文件名中的空格是 Linux 系统的天敌,但当然可以逃脱尽职尽责。您可以尝试以下三种方法:

  1. scp [remote username]@192.168.1.X:"'/media/remote_username/photos 4/file.jpg'" .
  2. scp [remote username]@192.168.1.X:"/media/remote_username/photos\ 4/file.jpg" .
  3. scp [remote username]@192.168.1.X:/media/remote_username/photos\\\ 4/file.jpg .

所有这些都应该可以工作,但有些在语法上比其他的更容易理解......

参考:

答案2

以下是针对 ZSH 用户的修复方法,

  1. SCP-1147[电子邮件保护]:/media/"photos 4"/file.jpg' /home/用户名/Pictures
  2. SCP-1147[电子邮件保护]:/media/"照片 4"/"带有空间的文件.jpg"' /home/用户名/Pictures

相关内容