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