我有一个IP摄像头,每分钟发送一张照片到PC(Linux)上带有(mv *20150501* 20150501)
的文件夹。
其中摄像机发送以下文件名:
时间表_20150501-103642.jpg
我想做一个shell脚本:
- 查看YYYYMMDD格式的日期文件名。如果该编号不存在,请创建一个具有该编号的文件夹,并将包含该编号的所有文件移动到此文件夹中。
- 检查每个文件夹中是否有.MP4文件。如果没有,执行此脚本,从图像中生成延时视频:
mencoder "mf://*.jpg" -mf fps=12:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 -oac copy -o Zeitraffer`**20150501**.mp4
基本文件夹为:啪
子文件夹:snap/(date +%YYYY%mm%dd)
到目前为止,我都是使用mv
单独手动完成所有这些工作。然后,我进入文件夹,修改脚本的时间推移。:—(
到目前为止,我有一个脚本来按日期至少制作大量文件夹:
#!/bin/bash
read -p "Geben Sie den ersten Ordner an (JJJJMMTT): " now
read -p "Geben Sie den letzten Ordner an (JJJJMMTT): " end
while [ "$now" != "$end" ] ;
do
now=`date +"%Y%m%d" -d "$now +1 day"`;
mkdir $now
done
你知道吗?
4条答案
按热度按时间mkshixfv1#
首先,感谢您的每一条评论!!!Regex对我来说太难了。谢谢alyway。经过大量的研究,今天我把很多拼图部分组合在一起。我得到的是:唯一的问题是,如果已经有一个文件夹,则由于while函数,相应的文件不会被复制。但由于脚本在今天前一天停止,这应该不是问题。然后我又为这个案子做了两个剧本,过去我忘了做一部电影,就这样创作出来了。另一个检查MP4文件是否已经存在于plex文件夹中,如果不存在,则将文件复制到那里。实际上,我只是修改了剧本。
“正常”工作的脚本:
检查MP4文件是否存在的脚本(如果不存在)将创建它并复制到plex文件夹:
和一个复制丢失的MP4文件到丛文件夹:
你知道最棒的是什么吗它真的很有效!我真不敢相信我做到了!!!
非常感谢你的帮助!!!
mf98qq942#
下面是一个可以帮助您的示例:
使用的是Nullglob,所以如果没有匹配的文件,
for
将不会按照字面意思使用Schedule*.jpg
模式。然后用sed
提取日期部分。将-p
添加到mkdir
可以确保如果目录已经存在,它不会打印错误,因此不需要单独检查它。xqk2d5yq3#
该解决方案将自动选择第一个日期,并将所有图像移动到一起,然后使用mencoder处理它们。该解决方案有几个假设,应该很容易实现:
基于这些假设,该解决方案非常有效,因为它同时移动一天的所有图片。我包括了两种方法来搜索最早开始的一天。如果你每天产生大量的文件,查看目录可能会更快。如果你有很多年的目录(所以,成千上万的目录),它可能会更快地看看剩余的图像。
liwlm1x94#
以下是我使用的一个解决方案,用于根据创建日期对图像和视频进行排序,基于ExifTool:
如果你把这段代码放在
sort_by_day.sh
中,并让它可以用chmod +x sort_by_day.sh
执行,你可以这样调用它:./sort_by_day.sh
对当前目录中的文件进行排序。./sort_by_day.sh my_images
对my_images
目录中的文件进行排序。基于EXIF标记
DateTimeOriginal
或-如果文件没有该标记-CreateDate
,脚本将创建类似2023-05-23
的目录,并将当天创建的文件移动到相应的目录中。如果文件没有这些EXIF标记,脚本不会移动它。
我已经用它来排序JPG和MOV。