如何在Bash中执行几行代码来完成以下操作。我试图在Bash中建立自己的技能,并学习如何从命令行处理更多小任务目录。
步骤:
指定开始日期和结束日期。将包括开始日期和结束日期在内的所有日期加载到"列表"
循环遍历列表,每次都创建一个这样的文件。 (需要日期格式化)
2017-11-10.w
2017-11-11.w
2017-11-12.w
答案 0 :(得分:1)
您可以将输入日期转换为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