我在一个目录中有很多 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。