コードを見ると、行
mget ls -t -r | tail -n 1
あなたが思うようにはしません。実際には のすべての出力を取得してから、 の出力をls -t
処理tail
しますmget
。この行を次のように置き換えることができます
mget $(ls -t -r | tail -n 1)
しかし、ftp
そのような呼び出しをサポートするかどうかはわかりません...
以外の FTP クライアントを使用してみてくださいftp
。たとえば、curlftpfs.sourceforge.netcurlftpfs
で入手できるのは、ローカル フォルダーであるかのように FTP をディレクトリにマウントし、そこにあるファイルに対してさまざまなコマンド (find、grep などを含む) を実行できるため、適切な候補です。 . この記事を見てください。
このように、出力はローカル コマンドから取得されるためls -t
、適切に並べ替えられたリストが返されることがより確実になります。
ところで、使用するのは少し複雑ではありませls -t | head -1
んls -t -r | tail -1
。それらは同じ結果を生成しますが、頭だけをつかむことができるのに、なぜ逆にして尻尾からつかむのですか:)
curlftpfs を使用する場合、スクリプトは次のようになります (サーバー ftp.abc.com とユーザー xyz とパスワード xyz を想定)。
mkdir /tmp/ftpsession
curlftpfs ftp://xyz:xyz@ftp.abc.com /tmp/ftpsession
cd /tmp/ftpsession/Rpts
cp -Rpf $(ls -t | head -1) /your/destination/folder/or/file
cd -
umount /tmp/ftpsession