我习惯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 配置~/.ssh
。sftp
它包括一个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
。