sftp 使用通配符重命名(mv)

sftp 使用通配符重命名(mv)

我习惯sftp每晚从服务器下载文件。目前,我使用此 sftp 脚本批量下载它们:

chmod 444 /home/sftpserveruser/.HL7 获得 MTB.HL7 /数据/hl7/下载/mtb/

我希望能够使用相同的 sftp 脚本移动它们,但遇到了问题。我事先不知道文件名。

通配符似乎不起作用:

sftp> 重命名 MTB*.HL7 HL7_archive/

无法将文件“/home/sftpserveruser/MTB*.HL7”重命名为“/home/sftpserveruser/HL7_archive/”:没有此文件或目录 sftp>

如果移动到另一个文件夹,重命名也需要目标文件夹的文件名

sftp>重命名 MTB20230801.HL7 HL7_archive/

无法将文件“/home/sftpserveruser/MTB*.HL7”重命名为“/home/sftpserveruser/HL7_archive/”:没有此文件或目录 sftp>

这可行,但我不确定如何使用 sftp 获取文件名:

sftp> 重命名 MTB20230801.HL7 HL7_archive/MTB20230801.HL7

FTP>

除了混合使用 sftp + bash 脚本之外,还有其他更好的方法吗?

答案1

lftp命令更加通用,在大多数 Linux 发行版中都可用。它支持多种协议。对于 SFTP,使用lftp sftp://user@host。由于它使用相同的后端,因此它遵循命令中的所有 SSH 配置~/.sshsftp它包括一个mmv命令,用于将多个文件移动(仅移动,不以任何方式更改实际名称)到目标目录。它将允许使用通配符来选择这些文件。

$ lftp -c 'help mmv'
Usage: mmv [OPTS] <files> <target-dir>
Move <files> to <target-directory> with wildcard expansion
 -O <dir>  specifies the target directory (alternative way)

使用 编写脚本lftp应该比使用 更容易sftp

相关内容