我正在尝试将 FTP 服务器上的多个文件移动到不同的目录。到目前为止,我已经编写了一个 bash 脚本,它将登录并检索远程目录中的任何新文件,但 ftp 命令不支持“mv”命令。本质上,该脚本将下载新文件,然后下载后将文件移动到同一服务器上的不同目录。
在您回答之前,请注意这需要自动化,因此使用像 Filezilla 这样的 GUI 对我没有帮助,因为我必须登录到各种 ftp 站点并手动移动文件,另外,请记住我无法 ssh进入任何服务器,因为它们是由其他公司管理的,并且 ftp 访问是我所能获得的。最后一件事,我不知道文件名是什么,所以使用通配符。
答案1
由于您似乎可以使用脚本成功登录,因此以下是该脚本登录后的命令。
与常识相反改名命令将移动文件
重命名 /path/to/file/to/move /path/to/files/destination/
这应该与通配符一起使用,例如 mp4重命名/path/to/files/*.mp4 /path/to/destination/
希望这就是您正在寻找的!
来源:https://stackoverflow.com/questions/9461844/how-to-move-files-using-ftp-commands
答案2
FTP 没有 mv 命令。您必须使用重命名命令
其概念是生成一个待办事项文件,将每个文件一一
完整的脚本重命名(移动),以实现移动多个文件。
1. 使用 mls 命令从 ftp 服务器获取文件列表
2. 生成待办事项列表文件
2.1 获取文件,对于演示,您可以对文本文件执行更多操作
2.2 重命名(移动文件)
3. 使用待办事项列表文件执行 ftp 命令
#!/bin/sh
clear
# change local directory
cd [local-directory]
#collect file names
ftp -ni ftp.abccompany.com <<EOF
user [user] [password]
cd /OUT
mls abc*.* list.txt
quit
EOF
# create ftp action list
echo >>todo.lst user [user] [password]
while read N
do
#echo >>todo.lst cd /OUT #for demo you can do more actions on text file
#echo >>todo.lst get $N #for demo you can do more actions on text file
echo >>todo.lst rename $N ARCHIVE/$N #did not change file name, move directory only
done <list.txt
echo >>todo.lst quit
# ftp transfer process
ftp -nv ftp.abccompany.com <todo.lst
# cleanup
rm todo.lst