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

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

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>'

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

1 ответ1

0

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

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

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