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

use*_*369 2 unix ftp

我需要从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
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

(remote-file) usage: get remote-file [ local-file ]
Run Code Online (Sandbox Code Playgroud)

我想我试图从ftp命令中获取文件的方式是不正确的,有人可以帮帮我吗?

Mar*_*ryl 5

您不能在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
Run Code Online (Sandbox Code Playgroud)

查找最新文件:

latest_file=`tail -1 /tmp/listing.txt`
Run Code Online (Sandbox Code Playgroud)

并下载它:

ftp -nv <<EOF
open $hostname
user $username $password
binary
cd $dir
get $latest_file
bye
EOF
Run Code Online (Sandbox Code Playgroud)