我想从远程复制一个文件到本地系统。现在我在linux系统中使用scp命令。我有一些文件夹或文件名有空格,当我试图复制该文件时,它显示错误消息:“没有这样的文件或目录”。

我试着:

scp ael5105@192.168.0.200:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/

我在网上看到了一些参考资料,但我不太明白,有人能帮我吗?

我如何在复制过程中转义文件名或目录名中的空格…


当前回答

你也可以这样做:

scp foo@bar:"\"apath/with spaces in it/\""

第一级引号将由scp解释,然后第二级引号将保留空格。

其他回答

基本上你需要转义它两次,因为它在本地转义然后在远端转义。

有几个选项你可以做(在bash中):

scp user@example.com:"'web/tmp/Master File 18 10 13.xls'" .
scp user@example.com:"web/tmp/Master\ File\ 18\ 10\ 13.xls" .
scp user@example.com:web/tmp/Master\\\ File\\\ 18\\\ 10\\\ 13.xls .

对不起,我用这个Linux问题把这个技巧放在Windows 10的Powershell上:用反斜杠转义的空格字符或用引号括起来的空格字符在这种情况下不适合我。效率不高,但我用“?”char来解决它:

“tasks.txt”文件6月22日。我用"tasks.txt?Jun-22.bkp"下载的

scp ael5105@ 192168 /home/5105/test/gg/Untitled?文件夹/a/qy /var/www/try/

的吗?远程和将匹配任何字符,包括空格吗

使用3个反斜杠来转义目录名中的空格:

scp user@host:/path/to/directory\\\ space /file ~/下载

应该从名为“带空格的目录”的远程目录中将文件复制到“下载”目录。

如果文件或文件夹名称之间有空格,那么你可以简单地在空格前添加一个黑色斜杠“,然后将整个路径放在单引号(”)中,这样就可以工作了。

例子:

假设文件夹名为“Test folder”,位于远程机器的/home/目录中。然后可以使用以下scp命令访问或下载该文件夹。

scp -r <user>@<host>:'/home/Test\ Folder' .