Linux,重命名映像文件以创build文件的顺序列表

我发现很难用我能find答案的方式来说出我的问题,我的问题如下…..

我有一个摄像头,每2分钟拍摄一张照片,并保存为一个编号文件,第一张照片拍摄于0000hrs,被命名为image001.jpg,在0002hrs image002.jpg等等。 23时59分,所有的照片都转入24小时的时间stream逝video,并保存为daily_video.mov。 在00:00(第二天),旧的image001.jpg被重写,整个过程重复,包括一个新的daily_video.mov。 这一切都工作正常的networking摄像头做文件的命名和覆盖,以及每天运行一次fffmpeg cron工作,使video。

我现在要做的是制作一个时间stream逝的video,通过将每个第30个文件从date图像复制到新文件夹并按顺序命名来说一个月。 即。 第1天; image030.jpg,image060.jpg等被重新命名为Archive001.jpg,Archive002.jpg等等。 image030.jpg,image060.jpg等…将需要被命名为Archive025.jpg,Archive026.jpg等。并重复,直到本月月底复制文件从一天顺序增加文件的名单列表在月底使用,在这个过程可以重复的地方。

那有意义吗?!!

你可以使用像下面这样的bash脚本。 只要在23时59分。 记住使用chmod +x myScript可执行文件我没有重命名为Archive00X.jpg,但是通过添加当前日期,它们将按照正确的字母顺序排列。

示例输出:

 cp files/image000.jpg >> archive/image_2012-08-29_000.jpg cp files/image030.jpg >> archive/image_2012-08-29_030.jpg .... 
  • 使pSource和pDest适应你的路径(最好是绝对路径)
  • 根据您的需要调整偏移和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