在Unix中按艺术家对目录中的歌曲进行批量排序

在Unix中按艺术家对目录中的歌曲进行批量排序

我在一个目录中有很多 mp3 歌曲,我想按艺术家对它们进行排序,以便每个艺术家的名字都是一个包含该艺术家音乐的目录。

答案1

这假设您的 mp3 标签采用 id3v2 格式。id3v1 格式略有不同。我建议使用类似的格式mediainfo。此示例使用id3v2

对于 *.mp3 中的文件;执行
    IFS=$':'
    艺术家=“$(id3v2 -l“${file}”| grep“TPE1”| awk'{打印$2}')”
    # 您的艺术家姓名现在存储在 $artist 中。
    # 此示例仅创建一个艺术家目录并将文件移动到其中。
    # 组织音乐的糟糕方式,但这是一个演示!
    [[ !-d “${艺术家}” ]] && mkdir -p “${艺术家}”
    mv -f "${文件}" "${艺术家}"
完毕

真正的解决方案是使用类似 MusicBrainz Picard 的东西。

答案2

我不确定你使用的是什么操作系统,但因为你的问题被标记为 Unix 编程,所以我假设你使用的是 *ix。所以,如果你可以安装id3tool您可以运行以下 BASH 命令行:

find . -name "*.mp3" | while read n; do 
    dir=`id3tool "$n" | grep Artist | cut -f 3 | sed 's/\s*$//'`; 
    mkdir -p "$dir"; 
    mv "$n" "$dir"/"$n" ; 
done

解释:

这个小脚本将循环遍历每个 mp3 文件,使用 提取艺术家的姓名id3tool并将其保存在变量中$dir。然后它将创建一个包含艺术家姓名的目录(除非该目录已经存在)并将文件移动到该目录中。

您也可以使用提供此功能(或至少以前提供此功能)的音乐播放器(例如 amarok)以 GUI 方式执行此操作。还有各种 id3 编辑器,只需搜索您最喜欢的软件源,其中至少有一些也应该能够执行此操作。

答案3

我将使用 Python 来执行此操作,使用Stack Overflow 上的这个答案eyeD3

相关内容