Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux,重新命名映像文件以创建文件的顺序列表_Linux_File Rename - Fatal编程技术网

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

Linux,重新命名映像文件以创建文件的顺序列表,linux,file-rename,Linux,File Rename,我发现很难用一种我能找到答案的方式来表达我的问题,我的问题如下 我有一个网络摄像头,每2分钟拍摄一张照片并保存为编号文件,第一张照片是在0000hrs拍摄的,名为image001.jpg,在0002hrs image002.jpg,依此类推。23时59分,所有照片都会转入24小时延时视频,并保存为daily_video.mov。在第二天的0点,旧的image001.jpg被重写,整个过程被重复,包括生成新的daily_video.mov。 网络摄像头负责文件命名和覆盖,cron每天运行一次fff

我发现很难用一种我能找到答案的方式来表达我的问题,我的问题如下

我有一个网络摄像头,每2分钟拍摄一张照片并保存为编号文件,第一张照片是在0000hrs拍摄的,名为image001.jpg,在0002hrs image002.jpg,依此类推。23时59分,所有照片都会转入24小时延时视频,并保存为daily_video.mov。在第二天的0点,旧的image001.jpg被重写,整个过程被重复,包括生成新的daily_video.mov。 网络摄像头负责文件命名和覆盖,cron每天运行一次fffmpeg来制作视频,这一切都很好

我现在想做的是制作一个延时视频,比如说一个月,将days图像中的每30个文件复制到一个新文件夹中,并按顺序命名。即。 第一天;image030.jpg、image060.jpg等。。。被重命名为Archive001.jpg、Archive002.jpg等。。。 但在第2天;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太大,它会告诉您缺少一些文件,但在其他情况下工作正常
  • 如果回音线干扰您,请将其移除;)
代码:


感谢您抽出时间回答我的问题,使用上面的解决方案和以下答案:我将能够实现我所需要的。谢谢
#!/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