2017-03-31 103 views
2

我試圖將FTP服務器上的多個文件移動到同一服務器上的不同目錄中。到目前爲止,我已經編寫了一個bash腳本來登錄和檢索遠程目錄中的所有新文件,但是ftp命令不支持'mv'命令。本質上,腳本會下載新文件,然後下載後將文件移動到同一臺服務器上的不同目錄中。請注意,文件名每次都會有所不同,因此在這裏使用通配符非常重要。在FTP服務器上編寫文件移動腳本

在你回答之前,請注意,這需要自動化,所以使用像Filezilla這樣的GUI不會幫助我,因爲我必須登錄到各種ftp站點並手動移動文件,同時請記住,因爲他們是由其他公司的和ftp訪問管理的,所以我無法訪問任何服務器。最後,我不知道文件名是什麼,所以使用通配符會有幫助。

任何幫助或指導是真正讚賞。

謝謝!

回答

2

也許重命名在ftp命令可以爲你工作嗎?

rename [from [to]] 
     Rename the file from on the remote machine, to the file to. 

我給它一個bash使用舊的文件我已經坐在一臺服務器上,它似乎你想要做什麼:

ftp> ls tmp/test* 
229 Entering Extended Passive Mode (|||55572|) 
150 Accepted data connection 
-rw-r--r-- 1 sinasohn sinasohn   21 Mar 31 16:37 tmp/testfile01 
226-Options: -a -l 
226 1 matches total 

ftp> ls tmp2/test* 
229 Entering Extended Passive Mode (|||64715|) 
150 Accepted data connection 
226-Options: -a -l 
226 0 matches total 

ftp> rename tmp/testfile01 tmp2/testfile01 
350 RNFR accepted - file exists, ready for destination 
250 File successfully renamed or moved 

ftp> ls tmp/test* 
229 Entering Extended Passive Mode (|||56698|) 
150 Accepted data connection 
226-Options: -a -l 
226 0 matches total 

ftp> ls tmp2/test* 
229 Entering Extended Passive Mode (|||50239|) 
150 Accepted data connection 
-rw-r--r-- 1 sinasohn sinasohn   21 Mar 31 16:37 tmp2/testfile01 
226-Options: -a -l 
226 1 matches total 
ftp> 

我把空行命令之間這裏清晰。

希望這會有所幫助!

+1

謝謝你的建議。我試過這個,雖然rename命令不支持通配符,所以我需要一種方法來使用通配符,即使這意味着要有一個單獨的腳本來執行在ftp中移動文件的任務。再次感謝! – Danny

+0

ftp中的** ls **命令允許您爲輸出指定本地文件名。你可以做一個_ls * filelist.txt_,然後解析該文件以獲取在重命名語句中使用的文件列表? –

+0

我如何解析filelist.txt?你有一個例子嗎? – Danny