使用一行脚本将视频关键帧数量小于10的视频拷贝到文件夹

假设文件夹input中有很多视频,视频的后缀为mpeg,将视频关键帧数量小于10的视频拷贝到文件夹ouput中

for i in input/*.mpeg;do ffprobe -select_streams v -show_frames -v quiet -print_format json=compact=1 $i | grep '"key_frame": 1' | wc -l | (read count && [ $count -lt 10 ] && cp $i output);done

要注意的几点:

关键帧判断中'"key_frame": 1' ,冒号和1之间是有空格的

[ $count -lt 10 ]中[和$中也是有空格的

除了使用-lt表示小于以外,-lt 是用于比较两个数值是否小于的比较运算符。它的全拼是"less than",表示"小于"的意思。在条件测试中,使用 [ ]test 命令结合 -lt 来进行数值比较。

例如,[ $count -lt 10 ] 表示判断变量 count 的值是否小于10。

这里是一些常用的数值比较运算符及其全拼:

  • -lt:less than(小于)
  • -gt:greater than(大于)
  • -le:less than or equal to(小于等于)
  • -ge:greater than or equal to(大于等于)
  • -eq:equal to(等于)
  • -ne:not equal to(不等于)

这些运算符可以在条件测试中用于比较数值。

posted @ 2023-07-10 14:52  海_纳百川  阅读(27)  评论(0编辑  收藏  举报
本站总访问量