linux - 将专辑总长度(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秒
我希望你能帮助我一点:)
谢谢
解决方案
最后,我在此处编写的用户的帮助下再次编写了脚本,最后我在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
推荐阅读
- php - php中的isset()函数不起作用,但也没有显示错误
- c# - MVC 接口和存储库的区别
- python - 如何在 python3 和“请求”上发布图像和文本 MultipartForm?
- javascript - 如何将文本放置在图像的中心?
- asp.net-core - 使用 Identity Server 4 和 .net core Identity 授权 API 没有请求中的授权标头
- javascript - 当位置为绝对时,div 高度为 0
- java - 为什么在构造函数和设置器中使用“this”关键字?
- visual-studio-2017 - VisualStudio 2017 15.7.0 无法在 WebForm 的调试模式下使用 DataTips
- android - 如何在 Android Studio 中创建和验证用户输入提示框
- ios - 在特定时间触发后如何重复本地通知