[英]Move multiple file from one directory to another on remote sftp server
我正在使用以下命令連接到我的遠程 sftp:
sftp user@host
接下來輸入密碼后,我得到 sftp 提示,即
sftp>
我的工作是將多個文件從目錄 A 移動到目錄 B。我可以通過重命名命令執行此操作,但一次只能執行一個文件。 是否有任何命令/語法可以將文件列表從目錄 A 移動到目錄 B。如下所示:
rename /A/file1 /A/file2 B/
只是補充一下,我必須通過命令行來完成,只能使用 sftp 協議,而不是像 fileZilla 或 winscp 這樣的任何工具。
您已在評論中指出您試圖避免向 SFTP 服務器發出多個請求的任何內容。
SFTP 協議實現最廣泛的版本是版本 3,草案 02 。 值得注意的是,這是使用最廣泛的 SFTP 服務器軟件 OpenSSH 實現的版本。 該版本的協議沒有提及通配符, 重命名文件的命令會將單個文件或目錄從舊名稱重命名為新名稱。
任何重命名多個文件的客戶端都必須為每個文件發出一次重命名操作,可能在之前執行一項或多項操作以獲取要重命名的文件名。 客戶端可以向用戶提供重命名多個文件的單個命令(或拖放選項,或其他),但在 SFTP 協議級別,它必須至少為每個文件發出一個 SFTP 請求。
必須是sftp嗎?
您可以直接使用 ssh 將命令作為塊腳本發出。
ssh user@host '
echo "Moving files"
date
rename /A/file1 /A/file2 B/
date
' > logfile 2>&1
psftp
工具(來自 putty-tools)可以將多個文件移動到遠程服務器上的另一個目錄。 這是我如何使用它,
mget *.ACT
ren *.ACT backup
如果ren
命令的第二個參數是目錄,則第一個參數可以是文件列表或通配符,它將所有文件移動到給定目錄。
mv
命令也與ren
相同。
沒有使用 sftp 的mv
命令。 正如您所說,唯一的解決方案是使用rename
。
作為終端中的解決方法,您可以在 python 中使用ftputil 。 它有一個重命名功能:
rename(source, target)
它重命名 FTP 服務器上的源文件(或目錄)。
這樣,您可以輕松連接到服務器、列出目錄並創建循環以重命名列出的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.