Linux,重新命名映像文件以创建文件的顺序列表
我发现很难用一种我能找到答案的方式来表达我的问题,我的问题如下 我有一个网络摄像头,每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等。。并重复到月底将文件从当天复制到月底要使用的文件的名称列表中,在该列表中可以重复该过程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
这有道理吗 可以使用如下所示的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