我有一个延时相机每隔几分钟拍一张照片,无论白天还是晚上。我想只传递白天的图像到ffmpeg来创建一个电影。所以我有一个文件夹,里面都是图片,文件名中有时间戳:
photo_2023-02-24_10-48-23.jpg
photo_2023-02-24_03-42.jpg
photo_2023-02-23_23-12-06.jpg
photo_2023-02-23_12-22.jpg
photo_2023-02-23_12-22-03.jpg
...
我想获得白天拍摄的所有图像(例如在08-00和17-00之间)。
到目前为止,我想出了这个正则表达式。我想选择"小时"在名字里。我如何重用该部分,以便在下一步中进行比较?find -E . -type f -regex ".*/photo_[0-9]{4}-[0-9]{2}-[0-9]{2}_([0-9]{2}).*" -exec bash -c
'fn=${0##*/}; h=${HOUR};
[[ $h -ge 8 && $h -le 17 ]] && echo "$0"' {} ;
目前有帮助:在Terminal/Linux
上查找包含特定日期范围的文件名的所有文件如果您想要获取所有在小时位置中包含从08到16(包括)的文件,您可以使用以下命令:
find . -type f -regex ".*/photo_[0-9]{4}-[0-9]{2}-[0-9]{2}_(0[89]|1[0-6]).*"