我有一个目录名列表。
我想scp进入远程计算机,进入每个目录名称并将文件复制回本地计算机。
我到目前为止:
while read line
do
scp remote_machine:/home/$line/$line.dat ./local
done < file_with_directory_names.txt
我设置了授权密钥,因此我不必每次都输入密码 - 但是这种方法会为每个传输的文件登录到远程计算机。我想有一个比这更好的方法。
答案 0 :(得分:4)
您可以在单个scp
参数中指定多个文件,方法是用空格分隔;你只需要确保它是scp
本身的一个参数。这应该适合你的情况:
scp "remote_machine:$(
sed 's,.*,/home/&/&.dat,' file_with_directory_names.txt | xargs)" ./local
sed
命令在每一行上添加/home/
前缀和名称 .dat
后缀; xargs
输出由空格分隔的单行上的所有结果路径名。将所有内容插入到remote_machine:
部分后面的源参数中,所有内部都是双引号,因此它仍然只是scp
的一个参数,你很高兴。