У меня есть список файлов mp3
названный так:
$artist/$album ($year)/$tracknum $title.mp3
Многие из этих треков имеют неправильные или отсутствующие теги, которые я исправляю с помощью id3v2
и regex, потому что имена файлов все правильные. Вот пример того, как я устанавливаю заголовки:
for mp3 in *.mp3; do id3v2 -t "$(echo $mp3 | cut -d. -f1 | cut -d\ -f2-)" "$mp3"; done
(Примечание: здесь есть кавычки, потому что заголовки часто имеют пробелы, что приводит к тому, что bash будет жаловаться, если они не используются)
У меня такой вопрос: есть ли лучший способ извлечь определенную подстроку из этих файлов? В случае с заголовками я не могу использовать grep -o
без совпадения с $tracknum
потому что во многих дорожках есть номера и пробелы в заголовках (это означает, что мне нужно "([0-9a-zA-Z ]+)"
для моего шаблона, который соответствует всему имени файла перед .mp3
).
Я почти уверен, что есть гораздо лучший способ сделать это. Есть?