Tente isto: (inspiração de superuser.com )
for f in *.mp4
do
echo -n "$f "
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal "$f"
done
No entanto, a saída estará no formato HH: MM: SS.MILLISECONDS. Se você deixar de fora a opção -sexagesimal, você obterá a duração em segundos.
Para a saída desejada HH: MM, você poderia fazer algo assim:
for f in *.mp4
do
echo -n "$f "
dur='ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$f"'
min='echo "$dur/60" | bc'
sec='echo "$dur%60/1" | bc'
echo "$min:$sec"
done