1

Я пытаюсь превратить мою музыкальную папку во что-то разумное. Прямо сейчас я храню всю свою музыку в /home/foo поэтому все альбомы мягко связаны с ~/music . Я хочу, чтобы структура была ~/music/<artist>/<album> У меня есть все символические ссылки в ~/music прямо сейчас, поэтому мне просто нужно вставить символические ссылки в правильную структуру. Я пытаюсь сделать это, углубившись в альбом с символическими ссылками, получая имя исполнителя с помощью id3info. Я могу сделать это, но я не могу заставить его работать правильно.

for i in  $( find -L $i -name "*.mp3" -printf "%h\n")
do

 echo "$i" #testing purposes

    #find its artist
    #the stuff after read file just cuts up id3info to get just the artist name
 #$artist = find -L $i -name "*.mp3" | read file; id3info $file | grep TPE | sed "s|.*: \(.*\)|\1|"|head -n1

 #move it to correct artist folder
 #mv "$i" "$artist"

done

Теперь он находит правильную папку, но каждый раз, когда в имени директории есть пробел, он переводит его на новую строку.

Вот пример того, что я пытаюсь сделать

$ ls 
DJ Exortius/
The Trance Mix 3 Wanderlust - DJ Exortius [TRANCE DEEP VOCAL TECH]@

Я пытаюсь The Trance Mix 3 Wanderlust - DJ Exortius [TRANCE DEEP VOCAL TECH]@ в настоящий каталог DJ Exortius . DJ Exortius уже существует, поэтому достаточно просто переместить его в правильный каталог, основанный на теге id3 в mp3.

Спасибо!

PS: я попробовал easytag, но когда я реструктурирую альбом, он перемещает его из /home/foo а это не то, что я хочу.

2 ответа2

0

Чтобы правильно обрабатывать имена файлов с пробелами в них, вы должны передать find в while а не делать for $(find) .

Вы также можете использовать процесс подстановки, чтобы выполнить то же самое. Вы бы перенаправили <(find) в done часть цикла while.

find -L $i -name "*.mp3" -printf "%h\n" | while read -r i
do
    moving_stuff_around
done

Или же

while read -r i
do
    moving_stuff_around
done < <(find -L $i -name "*.mp3" -printf "%h\n")

Последнее имеет преимущество в том, что не создает подоболочки.

0

Если вы используете жесткие ссылки вместо символических ссылок, вы можете оставить свой неупорядоченный пул на месте, используя EasyTAG для реструктуризации ссылок.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .