Shell - LFTP - 多个扩展

Shell - LFTP - multiple extensions

我一直在努力寻找一种方法来使用 mget 仅具有某些文件扩展名。

我使用了以下命令(如果我离开 *.csv 就可以正常工作)

lftp -e "set xfer:clobber true;mget $SOURCE_DIR*.{csv,txt,xls,xlsx,zip,rar};exit" -u $SOURCE_USERNAME,$SOURCE_PASSWORD $SOURCE_SERVER || exit 0

但运气不好,我收到消息 dir/*.{csv,txt,xls,xlsx,zip,rar} no files found

尝试添加括号

lftp -e "set xfer:clobber true;mget $SOURCE_DIR(*.{csv,txt,xls,xlsx,zip,rar});exit" -u $SOURCE_USERNAME,$SOURCE_PASSWORD $SOURCE_SERVER || exit 0

也没有运气

$SOURCE_DIR 末尾已经有一个斜杠 /

我尝试在本地测试 lftp,但我在 Vagrant box 上打开端口时遇到问题,因此出现了问题

我设法连接到一个 FTP 而无需转发端口。

事实证明(我知道这很明显)你必须为每个扩展名指定带有通配符的完整路径

mget $SOURCE_DIR*.csv $SOURCE_DIR*.txt

由space

分隔

此外,如果未找到一个(或多个)扩展名,消息“*.txt 未找到文件”将出现标准错误,这导致我无法继续执行完整脚本