我必须在非常大的日期范围内移动文件(从20141212
到20170202
)。
如何在unix机器上的bash中以%Y%m%d
格式迭代所有这些日期?
我正在使用gnu
的{{1}}版本。
答案 0 :(得分:3)
对于一种非常低效的做事方式:
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
答案 1 :(得分:1)
借助第三方工具(dateutils):
$ dateseq -i %Y%m%d 20141212 20170202 -f %Y%m%d
20141212
20141213
20141214
20141215
20141216
20141217
20141218
20141219
...
-i
和-f
选项是处理您的特定格式所必需的。
免责声明:我是该套餐的作者。