在lftp中使用正则表达式忽略文件名中的某些字符串

在lftp中使用正则表达式忽略文件名中的某些字符串

使用 mget 从目录中获取名称如 abc_yyyymmdd_hhmmss.csv 的特定文件。文件夹中的示例文件:

abc_20221202_145911.csv
abc_20221202_145921.csv
abc_20221202_145941.csv
abc_20181202_145941.csv

但是,我想忽略 hhmmss 部分。我想获取所有带有 abc_20221202_*.csv 的文件

如何在 mget.h 中包含*我的代码如下:

File=abc
Date=20221202
Filename=$File$Date"_*".csv
// Assume I have sftp connection established and I am in directory //where files with above naming convention are present. As I can //download the file when hardcoding exact file name during testing
conn='lftp $protocol://$user:$password@$sftp_server -p $port <<DOWNLOAD>/error.log
cd $path
mget $Filename
DOWNLOAD'

该脚本能够找到该文件,但无法从服务器检索它。但是,如果我删除 * 并提供整个文件名 abc_20221202_145941.csv ,它将下载该文件。为什么 * 导致检索文件时出现问题

答案1

我没有足够的声誉来发表评论。

您是否尝试过手动 ftp 输入然后执行mget abc_20221202_*.csv? - 它在脚本之外起作用吗?

另外,我读过的一些文章表明您需要cd先进入该文件夹,然后运行mget abc_20221202_*.csv​​.

其他文章说你需要使用完整路径运行 mget,所以mget /full/path/to/files/abc_20221202_*.csv.

相关内容