我正在使用以下命令连接到远程sftp:
sftp user@host
接下来输入密码后,我得到sftp提示,即
sftp>
我的工作是将多个文件从目录A移动到目录B。 我可以通过重命名命令来执行此操作,但一次只能单个文件。 是否有任何命令/语法可以将文件列表从目录A移动到目录B。如下所示:
rename /A/file1 /A/file2 B/
只需添加,我只需要通过命令行使用sftp协议即可完成操作,而无需像fileZilla或winscp之类的任何工具。
答案 0 :(得分:4)
您已在注释中指出,您正在尝试避免对SFTP服务器发出多个请求的任何事情。
SFTP协议实现最广泛的版本是Version 3, draft 02。值得注意的是,这是由OpenSSH实现的版本,它是使用最广泛的SFTP服务器软件。该协议的版本未提及通配符,command to rename a file将单个文件或目录从旧名称重命名为新名称。
任何重命名多个文件的客户端都必须对每个文件执行一个重命名操作,可能在此之前执行一个或多个操作以获取要重命名的文件名。客户端可以向用户提供一个命令来重命名多个文件(或拖放选项,或其他),但是在SFTP协议级别,它必须每个文件至少发出一个SFTP请求。
答案 1 :(得分:1)
必须是sftp吗?
您可以直接使用ssh作为块脚本发布命令。
ssh user@host '
echo "Moving files"
date
rename /A/file1 /A/file2 B/
date
' > logfile 2>&1
答案 2 :(得分:1)
psftp
工具(来自 putty-tools)可以将多个文件移动到远程服务器上的另一个目录。这是我如何使用它,
mget *.ACT
ren *.ACT backup
如果 ren
命令的第二个参数是目录,则第一个参数可以是文件列表或通配符,它将所有文件移动到给定目录。
mv
命令也与 ren
相同。
答案 3 :(得分:0)
没有使用sftp的mv
命令。如您所说,唯一的解决方案是使用rename
。
作为终端中的解决方法,您可以在python中使用ftputil。 它具有重命名功能:
rename(source, target)
它将重命名FTP服务器上的源文件(或目录)。
这样,您可以轻松地连接到服务器,列出目录,并创建一个循环来重命名列出的文件。