Как выполнить пакетное перемещение папок на один подкаталог на Mac?

У меня есть большая музыкальная библиотека (> 20000 песен), которую я пытаюсь перенести с моего Mac на свой ПК. Отдельные файлы, составляющие эту библиотеку, были собраны на моем Mac в течение длительного периода времени. Все они были извлечены из сжатых архивов, т.е. .zip или .rar. К сожалению, программа-распаковщик, которую я использовал для извлечения этих файлов, поместила их все во вновь созданную папку перед извлечением. Поскольку все эти архивы были просто заархивированными папками, теперь у меня есть куча файлов, которые находятся внутри вложенных избыточных каталогов.

Например, предположим, что я распаковал архив с именем ABCDWXYZ.zip.

Сам этот архив был просто сжатой версией папки ABCDWXYZ, внутри которой находились файлы Track 1, Track 2 и т. д. Однако программа извлечения, которую я использовал, сначала создала новую папку с именем ABCDWXYZ, а затем приступила к извлечению содержимого папки. архив в эту папку, в результате чего несколько тысяч путей выглядят следующим образом:

iTunes/ABCDWXYZ/ABCDWXYZ/Track 1.mp3
iTunes/ABCDWXYZ/ABCDWXYZ/Track 2.mp3
iTunes/ABCDWXYZ/ABCDWXYZ/Track 3.mp3
iTunes/ABCDWXYZ/ABCDWXYZ/Track 4.mp3
iTunes/ABCDWXYZ/ABCDWXYZ/Track 5.mp3
iTunes/QWERTY/QWERTY/Track 1.mp3
iTunes/QWERTY/QWERTY/Track 2.mp3
iTunes/QWERTY/QWERTY/Track 3.mp3
iTunes/QWERTY/QWERTY/Track 4.mp3

есть ли способ пакетно переместить все эти дважды вложенные папки в один каталог? после выполнения пакетного перемещения я бы хотел, чтобы результирующая файловая архитектура выглядела примерно так:

iTunes/ABCDWXYZ/Track 1.mp3
iTunes/ABCDWXYZ/Track 2.mp3
iTunes/ABCDWXYZ/Track 3.mp3
iTunes/ABCDWXYZ/Track 4.mp3
iTunes/ABCDWXYZ/Track 5.mp3
iTunes/QWERTY/Track 1.mp3
iTunes/QWERTY/Track 2.mp3
iTunes/QWERTY/Track 3.mp3
iTunes/QWERTY/Track 4.mp3

еще немного информации о файлах, которые могут помочь вам ответить на мой вопрос:

  • все файлы находятся внутри одной папки (а именно iTunes).
  • имена избыточных папок не всегда идентичны (это потому, что я иногда сокращал имя архива перед распаковкой, в результате чего-то вроде /iTunes/YUI/YUIOP/Track 1.mp3), но в большинстве случаях они идентичны. надеюсь это не повлияет на решение проблемы.
  • я ужасно неграмотен в командной строке и был бы очень признателен, если бы любые предлагаемые решения могли быть немного более «покровительственными», чем обычно. объясните, как мне 5, если возможно.

Большое спасибо.


person voxanimus    schedule 15.05.2015    source источник


Ответы (2)


Вы можете открыть Finder и найти все файлы .mp3, а затем поместить их в окно iTunes для повторной обработки. Это может оставить несколько пустых папок, но если у вас нет обсессивно-компульсивного расстройства, вы получите свою музыку обратно.

person codykochmann    schedule 15.05.2015

Используйте этот скрипт (из каталога iTunes):

#!/bin/sh
IFS=$'\n'
for d in *
do
    if [ -d "$d" -a -d "$d"/"$d" ]; then
        echo Processing $d
        mv "$d"/"$d" "$d.tmp" || exit 2
        rm -rf "$d" || exit 3
        mv "$d.tmp" "$d" || exit 4
    fi
done

ПРИМЕЧАНИЕ:

  1. Это не проверено. Используйте на свой страх и риск!.
  2. Проверьте это, скопировав несколько каталогов в другое место и попробовав их, прежде чем запускать в своей музыкальной коллекции.
person trojanfoe    schedule 15.05.2015
comment
как мне использовать этот скрипт из каталога iTunes? извините за глупый вопрос, но я действительно не знаю. мне просто открыть терминал и закинуть все это туда, указав каталог, где находится *? пожалуйста, помогите мне понять немного больше. - person voxanimus; 16.05.2015
comment
Вам нужно ввести это в файл с помощью текстового редактора, сохранить его в каталоге, а затем открыть terminal.app и cd /path/to/itunes. Затем сделайте sh scripname.sh. Об этом стоит узнать, поскольку это мощная функция Unix, которую наследует Mac. - person trojanfoe; 16.05.2015