Изменить порядок файлов внутри папки
У меня около 30 тысяч песен в mp3. Я уже организовал / пометил их с помощью Musicbrainz Picard. Но Пикард сделал излишки папок и подпапок внутри друг друга из-за тегов.
Теперь мне нужен скрипт для чтения каждой подпапки и перемещения всех mp3-файлов из папок подпапки в основную подпапку. Например:
Music -
Offspring -
Album 1 - 20 songs
Album 2 - 30 songs
Album 3 - 5 Songs
Folder 1 - 2 Songs
Folder 2 - 3 Songs
Journey -
Song Pack 1 - 2 Songs
Packy 1 - 15 Songs
Packy 2 - 20 Songs
Packy 3 - 7 Songs
Album 2 - 20 songs
Whatever 3 - 10 Songs
После запуска скрипта они будут выглядеть так:
Music -
Offspring - All Songs inside THIS folder. Not inside subfolders of Offspring.
Journey - All Songs inside THIS folder. Not inside subfolders of Journey.
И так далее..
Поэтому вся музыка для каждой подпапки каждой музыкальной группы не должна иметь больше подпапок, и все песни в соответствующих подпапках должны быть перемещены в основную подпапку музыкальной группы.
Поэтому, когда я проверяю музыку и вижу Bee Gees, я ЗНАЮ, что все песни находятся там, а не внутри какой-то подпапки Bee Gees.
ПРИМЕЧАНИЕ. - В некоторых случаях существует более 20 рекурсивных подпапок. Примером является: Music/Lady Gaga/1/Album/Lady Gaga/2/2/2/1/1/1/1/3/3Album 2/Lady Gaga/1/1/1/SONG.mp3
, В этом случае я хочу это внутри Music/Lady Gaga
и устранить остальные папки.
4 ответа
Я предлагаю запустить следующий (проверенный, но без гарантии) скрипт из главного каталога, в котором находятся все каталоги художников:
#!/bin/bash
for f in *; do
find "$f" -mindepth 2 -type f -exec mv --backup=numbered -t "$f" {} +
done
for f in *; do
find "$f" -mindepth 1 -type d
done |
sort -r |
while read d; do
rmdir "$d"
done
Это также заботится об удалении дубликатов и пустых подкаталогов.
Посмотрите на Easytag ,
sudo apt-get install easytag
Опция сканера ("Сканер" -> "Переименовать файлы и каталог") позволяет переупорядочивать файлы на основе параметров из тега ID.
Пример:
Artist/Track# - track name.ogg`: `%a/%n - %t
приведет к:
Prince / 07 - Purple Rain.ogg
Если у вас есть достаточно места для резервного копирования вашей музыки, прежде чем делать это, вы можете захотеть это сделать. Я проверил его, но он не дает никаких гарантий - если он сломается, вы сохраните все части.
Я сделал это при условии (исходя из вашего описания), что у вас есть основная папка, разделенная на исполнителя, далее разделенная на альбом. Если это соответствует вашим настройкам, продолжайте.
В терминале перейдите в вашу музыкальную директорию и выполните следующую команду (в bash):
for j in * ; do (cd "$j" ; (for i in * ; do (cd "$i" ; find . -name \*.[mM][pP]3 -exec mv {} . \; ) ; done)) ; done
Если у вас есть вопросы, просто спросите.
Возможно, вам удастся изменить настройки Picard, чтобы он не создавал эту иерархию каталогов для начала - возможно, что он будет в некоторой степени зависеть от этих файлов, оставшихся там, где он их оставил.