コマンドラインからフォルダのオーディオ再生時間を取得する

コマンドラインからフォルダのオーディオ再生時間を取得する

特定のディレクトリの完全なオーディオ再生時間を取得するLinuxコマンドライン(bash)に方法/ツールがありますか?

それは次のとおりです。

playtime --all --recursive /Music/DrumAndBass/
output: 1:35:06

ベストアンサー1

このツールを使って簡単なmp3info方法を見つけましたawk

残念ながら、これはmp3ファイルでのみ機能します。

mp3info -p "%m:%s\n" directory/*.mp3 |
awk -F: '{a+=$1*60+$2}END{printf"%d:%02d:%02d",a/3600,a%3600/60,a%3600%60}'

または小さなbashスクリプトで

#!/bin/bash

dir="$1"

mp3info -p "%m:%s\n" "$dir/*.mp3" |
awk -F: '{a+=$1*60+$2}END{printf"%d:%02d:%02d",a/3600,a%3600/60,a%3600%60}'

awk-lineについて@steveに感謝します。


修正する:

sndfile-infoまたは、次のようなsoxさまざまなファイル形式の再生時間を取得できます。flacwav

sndfile-info audio.flac | awk '/^Duration/ { print $3 }'

またはsox解決策:

sox -V3 audio.flac -n |& awk '/^Duration/ { print $3;exit }'

(最初の項目のみを印刷するようにコマンドexitの出力を制限します。)awk

おすすめ記事