У меня есть много mp3-песен в каталоге, и я хочу отсортировать их по исполнителю так, чтобы каждое имя исполнителя было каталогом, содержащим музыку этого исполнителя.
3 ответа
Это предполагает, что ваши mp3-теги имеют формат id3v2. id3v1 форматирует вещи немного по-другому. Я рекомендую что-то вроде mediainfo
для этого. Этот пример использует id3v2
for file in *.mp3; do IFS=$':' artist="$(id3v2 -l "${file}" | grep "TPE1" | awk '{ print $2 }')" # Your artist name is now stored in $artist. # This example just creates an artist directory and moves the file into it. # Terrible way to organize music, but this is a demonstration! [[ ! -d "${artist}" ]] && mkdir -p "${artist}" mv -f "${file}" "${artist}" done
Реальным решением является использование чего-то вроде MusicBrainz Picard.
Я бы сделал это в Python, используя инструмент, указанный в этом ответе о переполнении стека eyeD3.
Я не уверен, на какой ОС вы работаете, но так как ваш вопрос был помечен как 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, которые предлагают эту функцию (или, по крайней мере, раньше). Существуют также различные редакторы id3, просто ищите ваш любимый программный источник, по крайней мере, некоторые из них также должны это делать.