Сегодня iTunes начал неистово загружать песни из облака второй раз, создавая дубликаты. Вскоре я заметил подозрительную активность и принял меры. Но за пару минут работы iTunes загрузил несколько сотен песен, которые уже и так у меня были. Причём у дубликатов бережно дописал " 1" в конце, чтобы название не совпадало с оригиналом. По два раза каждую песню слушать не хочется, поэтому решил удалить. Одним словом, компания Apple в очередной раз захотела, чтобы я помучился. Но не тут то было. Я слишком ленивый, чтобы вручную удалять дубликаты песен, поэтому решил написать небольшой скрипт и удалить дубликаты программно. С недавних пор я использую Linux, поэтому скрипт получился на bash, но он должен запуститься и на Mac.
Для определения дубликатов отлично подошли их названия с " 1." в конце. Осталось только отсеять их из общего количества и удалить. В этом мне помог небольшой скрипт:
#!/bin/sh -eu
find /mnt/F/Music/ -name "* 1.*"|while read fname; do
echo "$fname"
# rm "$fname" # Uncomment me to delete
done
/mnt/F/Music/ - абсолютный путь к папке с музыкой
# rm "$fname" - удаление найденного дубликата. Сначала запускал скрипт с закомментированной строкой, чтобы проверить правильно ли находятся дубликаты. Затем убрал "#" и позволил функции удалить найденные файлы дубликатов.
Сохраняем этот скрипт в файл с расширением ".sh", ставим в свойствах файла разрешение запускать как программу и запускаем.
Прелесть в том, что функция ищет дубликаты рекурсивно т.е. во всех вложенных папках. А если бы удалял руками, то пришлось бы заходить в каждую папку и искать дубликат.
Итог
Физически удалил файлы дубликатов песен и проиндексировал медиатеку iTunes заново. На всё потратил буквально 10 минут. Удивительно как быстро можно сделать большой объём работы простой автоматизайцией. Вручную пришлось бы перебирать это дня три. Именно об этом и писал в статье "Учитесь программировать".