2014-10-30 162 views
0

我有一個目錄名稱列表。scp shell腳本中的多個文件

我想scp進入遠程機器,進入我的每個目錄名稱,並將文件複製回我的本地計算機。

我到目前爲止有:

while read line 
    do 
     scp remote_machine:/home/$line/$line.dat ./local 
    done < file_with_directory_names.txt 

我已成立了,這樣我就不用每次都輸入密碼授權密鑰 - 但這種方法並登錄到遠程機器的每一個文件,它轉移。我認爲有比這更好的方法。

回答

4

您可以通過用空格分隔單個scp參數來指定多個文件;你只需要確保它是scp本身的一個參數。這應該工作你的情況:

scp "remote_machine:$(
    sed 's,.*,/home/&/&.dat,' file_with_directory_names.txt | xargs)" ./local 

sed命令貼在每一行/home/前綴和.dat後綴; xargs在由空格分隔的單個行上輸出所有得到的路徑名。在remote_machine:部分之後將所有內容插入到源參數中,所有內部都使用雙引號,所以它仍然是scp的單個參數,而且您很好。