[英]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.