创建目录列表,其中列表中的每一行包含mp3文件名和mp3持续时间

时间:2015-10-14 17:07:18

标签: bash ffmpeg mp3

我希望从目录中的mp3文件名目录和每个文件的播放持续时间中生成一个列表。

以下命令会在目录

中生成一个mp3文件列表
for name in *.mp3; do ffmpeg -i "$name" 2>&1 |  grep -o -P "(?<=Input #0, mp3, from ').*(?=.mp3':)"  ; done; 

以下命令会生成每个MP3文件的持续时间列表

for name in *.mp3; do ffmpeg -i "$name" 2>&1 | grep -o -P '(?<=Duration: 00:).*(?=.[0-9]{2}, start)'  ; done;

我需要将这两个命令的输出合并为一个显示

的输出
  • mm:ss filename
  • mm:ss filename
  • mm:ss filename
  • mm:ss filename
  • mm:ss filename
  • mm:ss filename
  • ..

1 个答案:

答案 0 :(得分:3)

时间0想法。这样的事情......(拿你的代码)。

for name in *.mp3; 
do 
  a=$(ffmpeg -i "$name" 2>&1|grep -o -P "(?<=Input #0, mp3, from').*)(?=.mp3':)"
  b=$(ffmpeg -i "$name" 2>&1|grep -o -P '(?<=Duration: 00:).*(?=.[0-9]{2}, start)')
  echo "$b $a"
done; 

您可以自由使用printf代替echo和格式化输出。