Изменить структуру папок (музыкальной коллекции) на основе имен папок (потому что Foobar2000 сломался)

387
Turtle

Уважаемое сообщество суперпользователей, позвольте мне начать с того, что у меня очень мало опыта программирования, поэтому заранее прошу прощения за то, что мой вопрос может показаться немного странным.

Недавно я попытался реструктурировать папки моей музыкальной коллекции. Раньше все альбомы собирались в одну выделенную папку, поэтому базовая папка коллекции содержала папки, названные примерно так:

BASE\'<Artist> - [<year>] <album title>' 

Я хотел изменить структуру коллекции так, чтобы файлы сохранялись в папках по «правилу».

BASE\'<Artist>'\'[<year>] <album title>' 

Foobar2000 удалось создать эти новые папки для большинства альбомов и переместить туда mp3. Однако, к сожалению, программа потерпела крах в середине процесса, и старые папки все еще существуют. Эти старые папки все еще содержат обложку и т. Д. Теперь у меня осталось, скажем, две папки на альбом: подпапка альбома исполнителя со всеми mp3-файлами и оригинальная папка с обложкой.

Если бы он не потерпел крах, Foobar2000 переместил бы весь контент в новые подпапки и удалил исходные. Теперь мне интересно, смогу ли я закончить работу с чем-то вроде сценария оболочки (который я никогда не использовал в своей жизни)?

Я думаю, что сценарий должен был бы перебрать все папки в BASEи

  1. Проверьте, имеет ли имя папки структуру, '<Artist> - [<year>] <album title>'скажем, проверяя, содержит ли она среднюю часть' - '
  2. Проверьте, существует ли папка, '<Artist>'\'[<year>] <album title>'и, если да, переместите туда все оставшееся содержимое.
  3. Удалить исходную папку '<Artist> - [<year>] <album title>'

Это что-то, что может достичь сценарий оболочки? Любая помощь или советы будут высоко ценится.

0
Да, скрипт оболочки может сделать это, однако, пожалуйста, обратите внимание, что https://superuser.com не является бесплатным сервисом для написания скриптов / кода. Если вы сообщите нам, что вы уже пробовали (включая скрипты / код, который вы уже используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вам также следует прочитать [Как мне задать хороший вопрос?] (Https://superuser.com/help/how-to-ask). DavidPostill 7 лет назад 0
@DavidPostill Спасибо! Я прошу прощения, если у меня сложилось впечатление, что я хотел оскорбить сообщество, ожидая готового решения. Это, конечно, не было моим намерением. Я признаю, что я ничего не программировал - я узнал о сценариях оболочки только вчера. То, что я увидел, выглядело как довольно крутая кривая обучения для неопытного человека, такого как я, поэтому я в основном хотел убедиться, что сценарий оболочки действительно может решить мою маленькую проблему, прежде чем тратить значительные затраты времени на изучение сценариев оболочки. с нуля. Turtle 7 лет назад 1

1 ответ на вопрос

0
Hugh W

Да, это именно то, что вы можете сделать с помощью сценария оболочки. Вы уже выполнили 90% работы по точному определению того, что должен делать ваш алгоритм. Позвольте мне заполнить некоторые пробелы.

Cygwin предоставит вам среду сценариев bash. Этот ответ подсказывает, как перебирать список вещей в bash. grep проверит структуру имени папки и извлечет интересующие ее части (например, имя исполнителя). mkdir создаст каталоги (вы можете захотеть изучить эту -pопцию), а rmdir удалит их. mv фактически переместит файлы из одного каталога в другой.

Спасибо! Это именно та информация, на которую я надеялся. Я определенно буду копаться в этом. Turtle 7 лет назад 0
Пожалуйста. Если вы считаете, что я ответил на ваш вопрос, отметьте мой ответ как принятый. Это вознаграждает меня восхитительными репутациями, которые я жажду, и означает, что ваш вопрос больше не будет отображаться в списке вопросов без ответов, где я его нашел. Hugh W 7 лет назад 0
Я не забыл и не решался принять только потому, что на самом деле я еще не попробовал ваше предложение, но я уверен, что в вашем ответе есть все, что мне нужно. Turtle 7 лет назад 0