Bash 如何迭代从开始日期到结束日期的日期?

Bash 如何迭代从开始日期到结束日期的日期?,bash,date,unix,Bash,Date,Unix,我必须在很大的日期范围内移动文件(从20141212到20170202) 如何在unix机器上以bash中的%Y%m%d格式迭代所有这些日期 我使用gnu版本的date来做事情,效率非常低: for x in {20141212..20170202} do date --date="$x" &> /dev/null && whateverCommand "$x" done 为了更快捷的方式: x=0 while : do thisDate=`date --date

我必须在很大的日期范围内移动文件(从
20141212
20170202

如何在unix机器上以bash中的
%Y%m%d
格式迭代所有这些日期


我使用
gnu
版本的
date

来做事情,效率非常低:

for x in {20141212..20170202}
do
date --date="$x" &> /dev/null && whateverCommand "$x"
done
为了更快捷的方式:

x=0
while :
do
thisDate=`date --date="20141212 $x days" +%Y%m%d`
whateverCommand $thisDate
if [[ $thisDate = 20170202 ]]; then break; fi
((x++))
done

对于一种非常低效的做事方式:

for x in {20141212..20170202}
do
date --date="$x" &> /dev/null && whateverCommand "$x"
done
为了更快捷的方式:

x=0
while :
do
thisDate=`date --date="20141212 $x days" +%Y%m%d`
whateverCommand $thisDate
if [[ $thisDate = 20170202 ]]; then break; fi
((x++))
done

借助第三方工具():

-i
-f
选项是处理特定格式所必需的


免责声明:我是该软件包的作者。

借助第三方工具():

-i
-f
选项是处理特定格式所必需的



免责声明:我是该软件包的作者。

我的日期可能以不同的格式重复。我不想使用
awk
。使用
date
,以及任何你想要的格式。怎么做?你有GNU
date
?您对什么样的unix感兴趣?我的日期可能以不同的格式重复。我不想使用
awk
。使用
date
,以及任何你想要的格式。怎么做?你有GNU
date
?您对什么样的unix感兴趣?为什么效率低下?@guimption它运行从20141212到20170202的所有数字,检查它们是否为有效日期,然后运行命令。因为大多数数字都不是有效日期,所以浪费了很多时间。哦,那么这就不理想了。必须有一种方法可以使用
date
命令循环日期。但是怎么做呢?@guimpton:这取决于您使用的是
date
的哪个实现。(Gnu和BSD是流行的选项;BSD通常在Mac上找到。)如果你想独立于平台,那就更难了。Gnu是我正在使用的版本为什么效率低下?@guimption它运行从20141212到20170202的所有数字,检查它们是否是有效日期,然后运行命令。因为大多数数字都不是有效日期,所以浪费了很多时间。哦,那么这就不理想了。必须有一种方法可以使用
date
命令循环日期。但是怎么做呢?@guimpton:这取决于您使用的是
date
的哪个实现。(Gnu和BSD是流行的选项;BSD通常在Mac上可以找到。)如果你想独立于平台,那就更难了。Gnu是我正在使用的版本