Command-Line-Interface
如何在同一個 FTP 伺服器上移動一組文件?
在遠端 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/
作為最後的手段,我們可以建構一個包含一組 lftp
mv
命令和source
它的文件。有什麼我不知道的解決方案嗎?
或者,是否有任何功能強大的命令行工具來完成這項任務?
編輯:我僅限於 FTP 環境,因此由於環境限制,只能接受使用 FTP 的解決方案。
出於文件目的,我將發布用於完成任務的步驟。任何更好的解決方案都非常感謝。;-)
注意:此解決方案使用
lftp
FTP 客戶端。您可能必須先將其安裝在您的機器上,然後才能繼續。解決方案:
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 伺服器無關,那麼基於文件列表輸出的腳本似乎是最好的主意。