Довелось скачать саундтрек к игре в виде кучи файлов без тегов вообще.

Захотелось на скорую руку заполнить хотя бы названия и номера треков (альбом/год/жанр — одинаковые для всех, с этим все сильно проще).
Для начала из имени каждого файла нужно вычленить название трека. Используем sed в однострочном цикле для разделения имени файла на три блока. Блоки в sed выделяются экранированными скобками: начало — \(, конец — \)
вычленяем блок №2
| |
for file in *.mp3; do name=$(sed "s/\(^.*_.\{1,3\}_\)\(.*\)\(\.mp3\)/\2/" <<< $file); echo $name ; done;
| |
блок №1: начало строки, любые символы, блок №3: .mp3
подчеркивание, 1-3 любых символа,
подчеркиваниеВывод:
chat_thiscouldbeAWESOME lab sewers chat_downthe ...
(да, если вы решаете проблему с помощью регулярных выражений — у вас уже 2 проблемы, но в данном случае это отличное решение).
Убедившись что имена получаются корректные, меняем echo $name на редактор тегов mid3v2
for file in *.mp3; do name=$(sed "s/\(^.*_.\{1,3\}_\)\(.*\)\(\.mp3\)/\2/" <<< $file); mid3v2 -t "$name" "$file" ; done;Самое сложное сделано. Теперь номера треков (всего их 46, так что это число я подставляю вручную):
i=1; for file in *.mp3; do mid3v2 -T "${i}/46" "$file" ; ((i+=1)); done;Все одинаковые для треков теги заполняются совсем просто, например год:
for file in *.mp3; do mid3v2 -y 2010 "$file" ; done;
PS: утилита mid3v2 (рекомендуется как полностью поддерживающая v2/utf8-теги) входит в питоновский пакет mutagen и ставится примерно так (для debian/ubuntu)
apt install python3-mutagen
или так (установка в пользовательский профиль из репозитория pypi)
pip3 install --user mutagen
