Заменить номер CD в теге MP3 ID3

У меня есть библиотека файлов MP3, где в некоторых файлах тег «CD number» (TPOS) содержит значения «CDx», например «CD1» или «CD2». В спецификации ID3 указано, что значения TPOS должны быть численными. Обработка этих файлов ломает некоторые редакторы тегов, в частности eyeD3 игнорирует значения.

Что было бы разумным способом заменить эти теги ID3 на числовые строки через командную строку?

У меня есть решение, которое поставляется с некоторой магией командной строки, я ищу что-то более простое:

find . -name "*.mp3" -exec id3v2 -R {} \; |awk -F": " '/^Filename/ {f=$2};/^TPOS/ {print f, "\t", $2}'|grep CD1|awk -F" \t" '{print $1}'|xargs -L 1 -d "\n" -I{} id3v2 --TPOS "1" {} 

В двух словах: найти mp3-файлы, извлечь теги ID3 с id3v2, извлечь имя файла и TPOS с awk, grep для «CD1», вырезать имя файла и применить id3v2, чтобы установить номер диска в «1».

One Solution collect form web for “Заменить номер CD в теге MP3 ID3”

Если имена файлов не содержат символы новой строки, вы можете записать их как:

 exiftool -q -ext mp3 -if '$PartOfSet =~ /^CD\d+\z/' -p \ '$PartOfSet:$Directory/$FileName' . | while IFS=: read -rpf; do id3v2 --TPOS="${p#CD}" "$f"; done 
  • Сценарий чтения оболочки для sftp
  • Пара арифметических связанных команд, Dash, POSIX shell, sh, Increment
  • прочитать файл и присвоить значения другому файлу
  • grep для Java-метода
  • Множественное назначение переменных из разных частей одного командного конвейера
  • Выполнение «вилочной бомбы» безопасно
  • Подводя массив внутри awk?
  • Как получить все четные строки и нечетные строки из файла и сохранить их в двух разных файлах, таких как Evenfile & Oddfile?
  • Какова полезность команды: в сценариях оболочки, учитывая, что она явно ничего не делает?
  • Как проверить скрипт оболочки, если исполняемый файл запущен или нет?
  • Передача шаблона печати как переменной в awk
  • Как искать одиночные кавычки и двойные кавычки в поиске grep?
  • Interesting Posts

    не удается создать / dev / shm

    Как отключить скрипт в «dot-d» (с суффиксом «.d») в каталоге / etc без его удаления?

    Невозможно загрузить модуль ядра zfs в Fedora с помощью Secure Boot – «Необходимый ключ недоступен»

    Запустите программу через 6 минут после завершения

    pushd home dir, а не использовать тильду?

    Как напечатать имя отсутствующих файлов в папке?

    umount / dev: неверный аргумент

    Могут ли монтировать объемы lvm2 на основе имен устройств, таких как sda, sdb и т. Д., Если их имена изменяются?

    сортировать и uniq в awk

    стираются md0, md1 и не могут их воссоздать

    Как убить процесс, дающий ему несколько секунд, прежде чем совершить вынужденное убийство?

    Как вычесть строки из первой строки с помощью awk?

    брандмауэр-cmd форвардные правила для интерфейса с несколькими IP-адресами?

    Как использовать переменные среды OpenVPN для встроенных скриптов?

    Запуск двоичных файлов X86 на armv7

    Linux и Unix - лучшая ОС в мире.