在远程 FTP 服务器上,我在目录中有一组文件remote.dir1
。我想将该目录中的所有文件移动到remote.dir2
.
我正在使用lftp
并且正在尝试这样的事情:
lftp> mv remote.dir1/* remote.dir2/
它不起作用并显示:Access failed: 550 remote.dir1/*: The filename, directory name, or volume label syntax is incorrect.
我也试过:
lftp> glob -a mv remote.dir1/* remote.dir2/
显示使用消息:Usage: mv <file1> <file2>
但是,移动单个文件有效:lftp> mv remote.dir1/file1 remote.dir2/
作为最后的手段,我们可以构建一个包含一组 lftpmv
命令和source
它的文件。
有什么我不知道的解决方案吗?
或者,是否有任何功能强大的命令行工具来完成这项任务?
编辑:我仅限于 FTP 环境,因此由于环境限制,只能接受使用 FTP 的解决方案。
出于文档目的,我将发布用于完成任务的步骤。任何更好的解决方案都非常感谢。;-)
注意:此解决方案使用
lftp
FTP 客户端。您可能必须先将其安装在您的机器上,然后才能继续。解决方案:
或者,单线TM:
似乎 lftp 仅支持
glob
接受单个参数的命令的语法,因此mv
需要两个参数的 .使用 FTP,您的服务器可能允许扩展命令,尤其是通过
SITE EXEC
或类似方式执行有限命令集 - 检查 FTP 服务器的文档、其帮助 (SITE HELP
) 或登录横幅。然而,这些都不是标准化的,所以如果解决方案需要与 FTP 服务器无关,那么基于文件列表输出的脚本似乎是最好的主意。rsync 非常适合将文件从一台机器移动到另一台机器(甚至在同一台机器之间)。
此命令提供一个私钥,并连接到一台机器。它从远程目录抓取文件,并将它们复制到本地目录。您也可以通过切换源和目标来执行相反的操作。
聚会有点晚了,但在 2017 年 7 月,“mmv”命令被添加到 lftp。
所以,在你的情况下:
我认为FTP或多或少已经死了。我用它已经快5年了,10年前它就在路上了。
也就是说,我总是发现 ncftp 系列命令行工具非常友好,我希望这会“正常工作”。
我不打算设置 FTP 服务器来验证这一点,但请尝试一下。ncftp 还有很多其他值得喜欢的地方(至少从第 2 版开始)。