sftp命令提示符下的unix文件名模式

时间:2017-05-14 13:21:48

标签: bash unix pattern-matching

请帮助,我是unix的新手,

我想读取130000之前可用的文件(hhmiss),意思是文件从00小时到13小时。

XYZ_20170504_{00,01,02,03,04,05,06,07,08,09,10,11,12}[0-5][0-9][0-5][0-9].csv

OR

XYZ_20170504_{13,14,15,16,17,18,19,20,21,22,23}[0-5][0-9][0-5][0-9]

双位数模式匹配对我的情况不起作用。

实施例

File pattern 1: XYZ_DATE_TIME.csv

我想从sftp服务器mget文件,每天两次。

String_yyyymmdd_hhmiss.csv
XYZ_20170514_035959.csv   

OR

XYZ_20170514_165959.csv

1 个答案:

答案 0 :(得分:0)

首先,在您的问题中,我可以看到您的搜索中有关日期的错误。

你的正则表达式正在寻找这个

XYZ_20170504_

,您的文件包含此

XYZ_20170514_

显然这些永远不会匹配。我认为这更像你需要的东西

000000至125959

XYZ_20170514_(0[0-9]|1[0-2])[0-5][0-9][0-5][0-9].csv

OR

130000至235959

XYZ_20170514_(1[3-9]|2[0-3])[0-5][0-9][0-5][0-9].csv

这也是一个相对快速的解决方案,只寻找与时间相关的匹配。您还应该进一步改进这一点,以便您完全确定在日期上也能正确匹配。

为了您自己的参考,有许多在线工具可以帮助您进行正则表达式和模式匹配。我最喜欢的是regex101,但也有很多其他人可以使用。