我有一个包含作品声音文件的文件夹。我想将该文件夹列表转换为可以在电子表格中使用的内容。我希望结果包含文件名、声音长度和文件大小等内容。如何才能做到这一点?
答案1
我建议exiftool
这样做,因为它可以从大多数类型的文件中提取元数据并将其格式化为 csv:
exiftool -csv -FileSize -Duration -- *.opus > list.csv
但至少我的版本exiftool
似乎不支持从作品文件中提取持续时间。正如 @dodrg 所提到的,ffprobe
可以并且还支持将其输出格式化为 CSV:
{
echo filename,duration,size
for file in *.opus; do
ffprobe -v warning \
-of csv=p=0 \
-show_entries format=filename,duration,size \
-i "$file"
done
} > list.csv
但这要慢得多,因为它看起来ffprobe
无法一次从多个文件返回信息,因此我们需要为每个文件运行一次调用。
请注意,字段的顺序似乎是固定的。与您是否指定-show_entries format=filename,duration,size
或 一样-show_entries format=size,filename,duration
,字段始终按filename
, duration
,size
顺序列出。
jq
您还可以告诉它以 JSON 格式输出所有内容,并使用和重新设置您想要的字段和顺序的信息格式mlr
。mlr
还可以帮助您将 由 返回的信息exiftool
与 由 返回的信息连接起来ffprobe
。
例如:
exiftool -csv -- *.opus |
mlr --csv join --ijson -f <(
for file in *.opus; do
ffprobe -v warning -show_format -of json -i "$file"
done | jq .format) -j SourceFile -l filename > list.csv
将then cut -f SourceFile,duration,size,Artist
... 添加到mlr
命令中以将输出限制为您感兴趣的字段。