全球某些YYYYMMDD日期

时间:2014-09-15 12:31:26

标签: bash wildcard glob

我正在尝试为我的perl脚本提供几个文件按日历周。 它只需要从bash中获取所有文件:

foreach my $input (@ARGV){
   ...
}

命名约定如下:

FILE_XYZ_20140908_0000.000XYZ

这个月的第一周没问题。

FILE_XYZ_2014090[1-7]_*

..会匹配得很好。当一天从09变为10时,它变得棘手 是否有匹配201409 08 至201409 14 的所有文件的模式?

2 个答案:

答案 0 :(得分:3)

我不确定Bash的旧版本,但在我的版本中(4.1.11(2))

echo 9{08..14}

返回

908 909 910 911 912 913 914

在旧版本中,您必须使用更复杂的表达式(在3.00.15(1)中测试):

echo 9{0{8..9},1{0..4}}

答案 1 :(得分:0)

如果使用

启用扩展模式支持
shopt -s extglob

您可以指定以下模式:

FILE_XYZ_201409@(01|02|03|04|05|06|07)_*
FILE_XYZ_201409@(08|09|10|11|12|13|14)_*
FILE_XYZ_201409@(15|16|17|18|19|20|21)_*
FILE_XYZ_201409@(22|23|24|25|26|27|28)_*

模式不能很好地适应范围,这就是你需要明确写出来的原因。