Unix ls文件名在lftp中不起作用

Unix ls文件名在lftp中不起作用,unix,lftp,Unix,Lftp,我创建了一个lftp脚本,将单个文件上载到web托管提供商 用例是我从存储库根目录调用它,因此这里和远程服务器中的相对路径是相同的 #!/bin/bash DIRNAME=$(dirname $1) FILENAME=$(basename $1) REPO_ROOT=$(pwd) ABSOLUTE_PATH=${REPO_ROOT}/$1 lftp -u user,passwd -p port sftp://user@hosting <<EOF cd $DIRNAME put

我创建了一个lftp脚本,将单个文件上载到web托管提供商

用例是我从存储库根目录调用它,因此这里和远程服务器中的相对路径是相同的

#!/bin/bash

DIRNAME=$(dirname $1)
FILENAME=$(basename $1)
REPO_ROOT=$(pwd)
ABSOLUTE_PATH=${REPO_ROOT}/$1

lftp -u user,passwd -p port sftp://user@hosting <<EOF
cd $DIRNAME
put  $ABSOLUTE_PATH 
ls -l $FILENAME
quit 0
EOF

我试图使用
rels
cache flush
但没有成功。我正在使用lftp 4.0.9。

一些谷歌搜索最终给出了结果

这是lftp中SFTP协议实现的一个限制。它不能 列出单个文件,仅列出特定目录

幸运的是,lftp允许使用管道,所以

ls -l | grep  "$FILENAME"
解决了这个问题

ls -l | grep  "$FILENAME"