从 Unix 中的 FTP 从远程服务器获取最新文件

Get the latest file from a remote server from an FTP in Unix

我需要在 Unix 中从远程主机获取文件。我正在使用 ftp 命令。问题是我需要那个位置的最新文件。我是这样做的:

dir=/home/user/nyfolders
latest_file=$(ls  *abc.123.* | tail -1)
ftp -nv <<EOF
open $hostname
user $username $password
binary
cd $dir
get $latest_file
bye
EOF

但是我得到这个错误:

(remote-file) usage: get remote-file [ local-file ]

我认为我尝试从 ftp 命令中获取文件的方式不正确,有人可以帮助我吗?

您不能在 ftp 命令脚本中使用 shell 功能,例如别名、管道、变量等。

ftp 不支持使用任何语法的此类高级功能。

不过,您可以分两步完成(以利用步骤之间的 shell 功能)。

首先获取远程目录列表到本地文件(/tmp/listing.txt):

ftp -nv <<EOF
open $hostname
user $username $password
cd $dir
nlist *abc.123.* /tmp/listing.txt
bye
EOF

查找最新文件:

latest_file=`tail -1 /tmp/listing.txt`

并下载:

ftp -nv <<EOF
open $hostname
user $username $password
binary
cd $dir
get $latest_file
bye
EOF