根据日期范围创建一组文件
问题描述:
如何在Bash中执行几行代码来完成以下操作。我试图在Bash中建立我的技能,并学习如何从命令行处理更多的小任务目录。根据日期范围创建一组文件
步骤:
指定的开始日期和结束日期。将包含开始日期和结束日期之间的所有日期加载到“列表”中
-
循环遍历列表,每次创建一个像这样的文件。 (需要的日期格式)
2017-11-10.w 2017-11-11.w 2017-11-12.w
答
您可以将输入的日期为Unix的时间戳,然后添加的每一天,touch
,直到你过去的结束日期的结果命名的文件的秒数:
#!/bin/bash
startstamp=$(date -d "$1" +'%s')
endstamp=$(date -d "$2" +'%s')
secs_per_day=$((24 * 3600))
for ((thedate = startstamp; thedate <= endstamp; thedate += secs_per_day)); do
touch "$(date -d "@$thedate" '+%F.w')"
done
的%s
格式化字符串(GNU扩展)打印的自Unix纪元秒@
在参数到-d
选项的数量,并且表示该日期是在第格式。 %F
是%Y-%m-%d
的缩写,翻译为YYYY-MM-DD。
用法示例:
$ ./dates 2017-11-10 2017-11-15
$ ls -1
2017-11-10.w
2017-11-11.w
2017-11-12.w
2017-11-13.w
2017-11-14.w
2017-11-15.w
dates
Bash是不是管理日期很大。我会用Perl或其他更“高级”的语言来做,而不是bash。我的2美分。你试过什么,研究什么? – Nic3500