Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash sftp命令提示符中的unix文件名模式_Bash_Unix_Pattern Matching - Fatal编程技术网

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

Bash sftp命令提示符中的unix文件名模式,bash,unix,pattern-matching,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 或 两位数模式匹配不适用于我的案例 例子 File pattern 1: XYZ_DATE_TIME.csv 我想从一天两次的sftp服务器管理文件 String_yyyymmdd_hhmiss.csv XYZ_20170514_0

请帮忙,我是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

两位数模式匹配不适用于我的案例

例子

File pattern 1: XYZ_DATE_TIME.csv
我想从一天两次的sftp服务器管理文件

String_yyyymmdd_hhmiss.csv
XYZ_20170514_035959.csv   


首先,在你的问题中,我可以看到你在搜索日期时出现了一个错误

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

XYZ_20170504

你的文件包含了这个

XYZ_20170514

所以很明显,这些永远不会匹配。我觉得这更像你需要的

000000至125959

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

130000至235959

XYZ_20170514_(0[0-9]|1[0-2])[0-5][0-9][0-5][0-9].csv
XYZ_20170514_(1[3-9]|2[0-3])[0-5][0-9][0-5][0-9].csv
此外,这是一个相对快速的解决方案,只寻找与时间相关的匹配项。您还应该进一步改进这一点,以便完全确定日期是否匹配正确


对于您自己的参考,有许多在线工具可以帮助您使用正则表达式和模式匹配。我最喜欢的一个是,但是还有很多其他的可用。

首先,在您的问题中,我可以看到您在搜索日期时出现了一个错误

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

XYZ_20170504

你的文件包含了这个

XYZ_20170514

所以很明显,这些永远不会匹配。我觉得这更像你需要的

000000至125959

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

130000至235959

XYZ_20170514_(0[0-9]|1[0-2])[0-5][0-9][0-5][0-9].csv
XYZ_20170514_(1[3-9]|2[0-3])[0-5][0-9][0-5][0-9].csv
此外,这是一个相对快速的解决方案,只寻找与时间相关的匹配项。您还应该进一步改进这一点,以便完全确定日期是否匹配正确


对于您自己的参考,有许多在线工具可以帮助您使用正则表达式和模式匹配。我最喜欢的一个是,但是还有很多其他可用的。

谢谢你的回复,我尝试了解决方案,但仍然不起作用:文件1:XYZ_20170504_160002.csv文件2:XYZ_20170504_033002.csv sftp>mget XYZ_20170504_0[0-9]| 1[0-2])[0-5][0-9][0-5][0-9]。csv文件“/文件夹/XYZ u 20170504_(0[0-9]_20170504][1[0-5][0-5][0-9].csv“未找到。尽管您提供的正则表达式通过了您提供的联机链接中输入的测试,但不知何故,上面的操作不起作用。一个有效的案例是sftp>mget XYZ_20170504_*。csv感谢您的回复,我尝试了解决方案,但仍然不起作用:文件1:XYZ_20170504_160002.csv文件2:XYZ_20170504_033002.csv sftp>mget XYZ_csv 20170504_0(0[0-9]| 1[0-2])[0-5][0-9][0-5][0-9]。csv文件“/文件夹/XYZ 504_20170504_0[0-9][0-9]。”找不到。虽然您提供的regex通过了您提供的在线链接中输入的测试,但不知何故无法在上面工作。一个工作正常的案例是sftp>mget XYZ_20170504_*..csv您可以添加终端输出以便我们看到发生了什么吗?sftp>mget XYZ_20170504_40;0[0-9]| 1[0-2])[0-5][0-9][0-5][0-9]。csv文件“/文件夹/XYZ_20170504_40;0[0-9][1[0-2])[0-5][0-9][0-5][0-9]。csv未找到。您可以添加终端输出以便我们看到发生了什么吗?sftp>[0-9]| 1[0-2])[0-5][0-9][0-5][0-9]。csv文件“/文件夹/XYZ_20170504|(0[0-9]|1[0-2])[0-5][0-9][0-5][0-9]。未找到csv”。