根据时间计算的文件名处理文件
Working with files based on filename calulated from time
我有一台远程 Linux 计算机,一台 raspberry pi,它每分钟拍摄两张照片并将它们上传到 Linux 服务器。这些照片的名称是这样的:SITE-03-22-16-091543.jpeg。文件名格式如下:Sitename-month-day-year-hourminutesecond.jepg。在发送照片之前,通过 scp,我使用 exiv2 将一些当地天气日期嵌入到每张照片中。这样,天气状况就会存储在每张照片中。所有这些都工作正常。我希望其中大约有 15 个都每分钟向服务器发回两个快照。
在服务器端,这些照片存储在它们自己的 SITE 文件夹中。这个想法是从每个站点制作延时视频。我们感兴趣的延时有四种类型:
1) 24小时循环,从12:00am到11:59pm。
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, sun rise at my location。并使用 'set' 选项,在我的位置生成 1913,日落。由于我不住在赤道,所以日出和日落从 5:30am 到 7:30am 不等。视季节而定。当然可以。
我有代码可以将图像列表编译到移动中,添加叠加层,并添加嵌入式天气数据。问题是如何创建日出前 30 分钟 + 2 小时照片的列表。然后是日落前 2 小时 + 30 分钟后。然后终于,日出前30分钟一直到日落+30分钟。
我确定答案是数学!有人可以在黄砖路上启动我吗?
awk
救援!
在此处通过回显替换您的脚本以生成时间
$ echo 07:10 |
awk -F: -v offset=30 -v path="$filepath" '{
h=-int(offset/60);
m=-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。假设 start/end 次不更改日期。北极附近可能不是真的!
我认为有些变量可以简化,但可以作为进一步改进的工作基础。
更新:int() 缺失,已修复,您也可以将路径作为另一个变量传递
我有一台远程 Linux 计算机,一台 raspberry pi,它每分钟拍摄两张照片并将它们上传到 Linux 服务器。这些照片的名称是这样的:SITE-03-22-16-091543.jpeg。文件名格式如下:Sitename-month-day-year-hourminutesecond.jepg。在发送照片之前,通过 scp,我使用 exiv2 将一些当地天气日期嵌入到每张照片中。这样,天气状况就会存储在每张照片中。所有这些都工作正常。我希望其中大约有 15 个都每分钟向服务器发回两个快照。
在服务器端,这些照片存储在它们自己的 SITE 文件夹中。这个想法是从每个站点制作延时视频。我们感兴趣的延时有四种类型:
1) 24小时循环,从12:00am到11:59pm。
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, sun rise at my location。并使用 'set' 选项,在我的位置生成 1913,日落。由于我不住在赤道,所以日出和日落从 5:30am 到 7:30am 不等。视季节而定。当然可以。
我有代码可以将图像列表编译到移动中,添加叠加层,并添加嵌入式天气数据。问题是如何创建日出前 30 分钟 + 2 小时照片的列表。然后是日落前 2 小时 + 30 分钟后。然后终于,日出前30分钟一直到日落+30分钟。
我确定答案是数学!有人可以在黄砖路上启动我吗?
awk
救援!
在此处通过回显替换您的脚本以生成时间
$ echo 07:10 |
awk -F: -v offset=30 -v path="$filepath" '{
h=-int(offset/60);
m=-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。假设 start/end 次不更改日期。北极附近可能不是真的!
我认为有些变量可以简化,但可以作为进一步改进的工作基础。
更新:int() 缺失,已修复,您也可以将路径作为另一个变量传递