2

我发现很难以一种我可以搜索答案的方式来表达我的问题,我的问题如下......

我有一个网络摄像头,每 2 分钟拍摄一张照片并保存为编号文件,第一张照片是在 0000 小时拍摄的,名为 image001.jpg,在 0002 小时为 image002.jpg 等等。在 2359 小时,所有照片都转为 24 小时延时视频并保存为 daily_video.mov。在(第二天)0000 时,旧的 image001.jpg 被覆盖,整个过程重复,包括生成新的 daily_video.mov。使用网络摄像头进行文件命名和覆盖,以及每天运行一次 fffmpeg 来制作视频的 cron 作业,这一切都可以正常工作。

我现在要做的是通过将每 30 个文件从天图像复制到新文件夹并按顺序命名来制作一个月的延时视频。IE。第一天;image030.jpg、image060.jpg 等...重命名为 Archive001.jpg、Archive002.jpg 等...但在第 2 天;image030.jpg、image060.jpg 等... 将需要命名为 Archive025.jpg、Archive026.jpg 等...并重复到月底将文件从当天复制到按顺序增加的文件名称列表到在月底使用,可以重复该过程。

那有意义吗?!!

4

1 回答 1

1

您可以使用如下所示的 bash 脚本。只需在 2359 小时致电即可。请记住使用我没有重命名为 Archive00X.jpg 使其可执行chmod +x myScript ,但是通过添加当前日期,它们将按正确的字母顺序排列。

示例输出:

cp files/image000.jpg >> archive/image_2012-08-29_000.jpg
cp files/image030.jpg >> archive/image_2012-08-29_030.jpg
....
  • 使 pSource 和 pDest 适应您的路径(最好是绝对路径)
  • 根据您的需要调整 offset 和 maxnum。如果 maxnum 太大,它会告诉您一些文件丢失,但其他文件可以正常工作。
  • 如果它们打扰您,请移除回声线;)

代码:

#!/bin/bash

pSource="files"
pDest="archive"

offset=30
maxnum=721

curdate=`date "+%F"`

function rename_stuff()
{
 myvar=0
 while [ $myvar -lt $maxnum ]
 do
    forg=`printf image%03d.jpg ${myvar}`
    fnew=`printf image_%s_%03d.jpg ${curdate} ${myvar}`

    forg="$pSource/$forg"
    fnew="$pDest/$fnew"

    if [ -f "$forg" ]; then
     echo "cp $forg >> $fnew"
     cp "$forg" "$fnew"
    else
     echo "missing file $forg"
    fi

    myvar=$(( $myvar + $offset ))
done
}

rename_stuff
于 2012-08-29T19:35:26.240 回答