我在 shell 中运行这个语句
for file in /path/to/files/*.mp4; do ffprobe -show_frames $file | grep "pkt_size" > ${file}.txt
完毕
如果我也能得到这些信息,那就太好了;
- 当我用数字 grep pkt_size 行时,我希望脚本 - 将每个 pkt_size 数字除以 100,
- 然后在每 50 行之后添加(总和)pkt_size 行号。
我已经在另一个答案中向您展示了如何迭代所有文件并附加结果。这就是你将如何使用@LordNeckbeard的命令bash
为一个文件计算内容的方法。ffprobe
你的作业是修改和整合这两个答案。
#!/bin/bash
file=/path/to/file.mp4
if [ ! -f $file ]; then
echo Error: File not found
exit 1
fi
pkt_sizes=$(ffprobe -show_entries frame=pkt_size -of default=noprint_wrappers=1:nokey=1 -i $file -loglevel 0)
function print_sum {
#use `bc` for floating point operations
sum=$(echo "scale=${precision};${sum}/100" | bc -l)
echo "SUM("$start","$i")="$sum
}
i=1
start=1
sum=0
precision=3
#compute/print sum every 50 packets
for size in $pkt_sizes; do
(( sum+= size ))
if (( $i % 50 == 0 )); then
print_sum
sum=0
start=$(( i + 1 ))
fi
(( i++ ))
done;
#sum last packets (n < 50)
if (( "$start" < "$i" )); then
(( i-- ))
print_sum
fi
这足以让您开始使用 shell 算术,因此请参阅文档以了解更多问题。