You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让mediainfo输出的文件时长以逗号分隔或换行显示?

解决批量获取视频时长并格式化输出的问题

首先修正原脚本的核心问题:原命令for i in /Volumes/foo仅会遍历这个目录本身,而非目录下的所有文件。要批量处理目录内的文件,需要调整遍历路径,再结合需求修改输出格式:

方案1:每个时长单独换行显示

直接调整遍历路径为目录下的所有文件,mediainfo的输出会自动每行一个时长:

for i in /Volumes/foo/*; do
    mediainfo --Inform="Video;%Duration%" "$i"
done

如果需要包含子目录里的文件,用find更稳妥:

find /Volumes/foo -type f -exec mediainfo --Inform="Video;%Duration%" {} \;

方案2:用逗号分隔所有时长

方法A:通过变量收集后输出

先把所有时长存到变量里,最后统一拼接成逗号分隔的格式:

durations=""
for i in /Volumes/foo/*; do
    duration=$(mediainfo --Inform="Video;%Duration%" "$i")
    durations="${durations}${duration},"
done
echo "$durations"

方法B:用paste命令合并输出

通过管道把所有单行输出合并成逗号分隔的字符串:

for i in /Volumes/foo/*; do
    mediainfo --Inform="Video;%Duration%" "$i"
done | paste -sd ',' -

如果要处理子目录文件,结合find使用:

find /Volumes/foo -type f -exec mediainfo --Inform="Video;%Duration%" {} \; | paste -sd ',' -

注:如果部分文件不含视频流,mediainfo会输出空值,最终结果会出现连续逗号,可根据需求添加判断逻辑过滤空值。

内容的提问来源于stack exchange,提问作者Bleakley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:25:11