使用基于从时间计算的文件名的文件

时间:2016-03-25 17:57:46

标签: linux bash awk filesystems raspberry-pi

我有一台远程Linux计算机,一个覆盆子pi,每分钟拍摄两张照片并将它们上传到Linux服务器。这些照片的名字如下:SITE-03-22-16-091543.jpeg。文件名的格式如下:Sitename-month-day-year-hourminutesecond.jepg。在通过scp发送照片之前,我使用exiv2在每张照片中嵌入了一些当地的天气日期。这样,天气条件存储在每张照片中。所有这一切都很好。我希望其中大约有15个能够每分钟向服务器发送两个快照。

在服务器端,这些照片存储在自己的SITE文件夹中。我们的想法是从每个网站制作延时视频。我们感兴趣的有四种类型的时间流逝:

1)24小时循环,从凌晨12:00到晚上11:59。

2)日出循环,从日出前30分钟到日出后2小时

3)日落循环,从日落前2小时到日落后30分钟

4)日光环,从日出前30分钟到日落后30分钟

24小时循环很简单。

日出和日落循环有点棘手。我在SourceForge(https://sourceforge.net/projects/sunwait4windows/)上下载并编写了Ian Craig的“sunwait”程序。使用命令“sunwait list rise 35.1174N 89.9711W | gawk -F:'{print $ 1 $ 2}'“产生输出0700,在我的位置太阳升起。并使用'set'选项,在我的位置生成1913年的夕阳。由于我不住在赤道,日出和日落从早上5:30到早上7:30不等。视季节而定。当然。

我有代码将图像列表编译到移动中,添加叠加层,并添加嵌入的天气数据。问题是如何在日出+ 2小时之前创建30分钟图片的列表。然后在日落前2小时+过去30分钟。最后,在日出前30分钟一直到日落+30分钟。

我确定答案是MATH!有人可以在黄砖路上开始我吗?

1 个答案:

答案 0 :(得分:2)

awk救援!

用你的脚本代替echo来生成时间

$ echo 07:10 | 
  awk -F: -v offset=30 -v path="$filepath" '{
                         h=$1-int(offset/60);
                         m=$2-offset%60;
                         if(m<0) {m=m+60; h--}
                         for(i=0;i<=150;i++)
                           {m++;
                            if(m>59) {m=m%60; h++};
                            printf path"%02d%02d.jpeg\n",h,m}}'

创建一个151步计数器,从给定小时分钟的偏移量(以分钟为单位)开始。对于另一种情况,输入偏移量为120.假设开始/结束时间不会更改日期。在北极周围可能不是真的!

我认为有些变量可以简化,但可以作为进一步改进的工作基础。

update:int()缺失,修复,也可以将路径作为另一个变量传递