Command-Line-Interface

如何在同一個 FTP 伺服器上移動一組文件?

  • October 6, 2017

在遠端 FTP 伺服器上,我在目錄中有一組文件remote.dir1。我想將該目錄中的所有文件移動到remote.dir2.

我正在使用lftp並且正在嘗試這樣的事情:

lftp> mv remote.dir1/* remote.dir2/

它不起作用並顯示:Access failed: 550 remote.dir1/*: The filename, directory name, or volume label syntax is incorrect.

我也試過:

lftp> glob -a mv remote.dir1/* remote.dir2/

顯示使用消息:Usage: mv <file1> <file2>

但是,移動單個文件有效:lftp> mv remote.dir1/file1 remote.dir2/

作為最後的手段,我們可以建構一個包含一組 lftpmv命令和source它的文件。

有什麼我不知道的解決方案嗎?

或者,是否有任何功能強大的命令行工具來完成這項任務?

編輯:我僅限於 FTP 環境,因此由於環境限制,只能接受使用 FTP 的解決方案。

出於文件目的,我將發布用於完成任務的步驟。任何更好的解決方案都非常感謝。;-)

注意:此解決方案使用lftpFTP 客戶端。您可能必須先將其安裝在您的機器上,然後才能繼續。

解決方案:

lftp> renlist remote.dir1/ | "sed 's/\(.*\)/mv \"\1\" \"remote.dir2\/\"/'" > list  
lftp> source list  
lftp> !rm list  

或者,單線TM

lftp> renlist remote.dir1/ | "sed 's/\(.*\)/mv \"\1\" \"remote.dir2\/\"/'" > list && source list && !rm list

似乎 lftp 僅支持glob接受單個參數的命令的語法,因此mv需要兩個參數的 .

使用 FTP,您的伺服器可能允許擴展命令,尤其是通過SITE EXEC或類似方式執行有限命令集 - 檢查 FTP 伺服器的文件、其幫助 ( SITE HELP) 或登錄橫幅。然而,這些都不是標準化的,所以如果解決方案需要與 FTP 伺服器無關,那麼基於文件列表輸出的腳本似乎是最好的主意。

引用自:https://serverfault.com/questions/532522