首页 > 解决方案 > 将专辑总长度(FLAC 格式歌曲)添加到每个文件夹的名称中

问题描述

感谢您接受我 :)

我正在制作一个项目来订购我收藏的很多专辑,并且我正在按专辑的完整长度对专辑进行分类,目前我正在手动进行,但这很乏味。我想看看是否可以在 linux 中创建一个脚本,允许您浏览每个文件夹,确定专辑的总持续时间,然后在文件夹名称的最后部分添加该持续时间。

我拥有的专辑的一般结构是这样的:

Album1
   >|Disk1
       >SONG1.FLAC
       >SONG2.FLAC
       >SONG3.FLAC
   >|Disk2
       >SONG1.FLAC
       >SONG2.FLAC
       >SONG3.FLAC

 Album2
   >|Disk1
       >SONG1.FLAC
       >SONG2.FLAC
       >SONG3.FLAC
   >|Disk2
       >SONG1.FLAC
       >SONG2.FLAC
       >SONG3.FLAC

我的想法是脚本确定 Album1 和 Album2 以及同一文件夹中的所有专辑的总持续时间,以及持续时间,如果可能的话,以这种格式 [分钟:秒] 将其添加为专辑名称,例如:

Album1[minutes:second]
Album2[minutes:second]

如果专辑时长超过一小时,可以换算成分钟,例如:1小时:36分:13秒>>>>96分13秒

我希望你能帮助我一点:)

谢谢

标签: linuxbashflac

解决方案


最后,我在此处编写的用户的帮助下再次编写了脚本,最后我在shntool程序的帮助下完成了这个,我发现歌曲的总数比使用exiftool. 这种方式也比 exiftool 快得多:

#!/bin/bash
for d in */ ; do
    a=$d
    z="$(basename "$d")"
    cd "$d"
    var=$(find * -name "*.flac" | shntool len  | tail -n1 | tr ':' '.'| sed 's/^[ t]*//' | cut -d "." -f 1,2 )
    cd -
    echo "[$var]"
    echo "$z"
    c=$z$"[$var]"
    echo "$c"
    mv -- "$z" "$c"
done

推荐阅读