2014-09-05 68 views
0

我试图使用scp通过shell脚本复制文件。我的一段代码是:使用scp在文件名中使用空格复制文件文件

for file in $result; 
do 
scp [email protected]:"$feed" destination 
done 

其中结果中包含要复制的文件列表。但它并不复制其名称中有空格的文件,例如:

new assignment.xls 

请提供建议。

+0

不应该是“$ file”吗? – MightyPork 2014-09-05 06:49:42

+0

为什么';'在第一行结尾(在'$ result'后面)? – NeronLeVelu 2014-09-05 08:06:04

+0

是的抱歉打印错误..应该是$文件 – 2014-09-05 09:23:41

回答

0
for file in $result; 
do 
name=`echo $file | sed 's/ /\\ //'` 
scp [email protected]:"$name" destination 
done 
+0

scp username @ hostname:“/$ feed“destinat离子....这是怎么应该给脚本 – 2014-09-05 07:22:08

+0

已经更新,只是改名字空白 – 2014-09-05 07:55:38

0
echo "${result}" | while read FileName 
do 
    scp "[email protected]:${FileName}" destination 
done 

(改编为while read代替for in}

封装的整个源代码,而不仅仅是文件/路径。destionation可能还需要一个报价是空间或其他元字符是内部

+0

这给我一个消息,参数列表太长..我的要求是一次复制一个文件到本地机器通过scp然后从本地到hdfs位置。由于我在本地 – 2014-09-05 10:42:10

+0

中使用了空间限制,因此在读取时使用以确保每次迭代一个文件(因此结果中每行一个文件) – NeronLeVelu 2014-09-05 12:28:00