Учимся работать с Automator. Сортировка файлов по папкам

Виктор Колышев avatar | 34
FavoriteLoading В закладки
Учимся работать с Automator. Сортировка файлов по папкам

В прошлый раз мы подняли тему мощнейшего инструмента в OSX — Automator. В комментариях я попросил указать задачи, которые бы Вам хотелось автоматизировать – получил оживленную реакцию. Задачи нашлись, начнем их решать!

Для справки. Отто – именно так зовут робота, который изображен на иконке приложения Automator.

На сегодня я отобрал простую и в тоже время распространённую задачу. Мы потренируемся автоматически сортировать содержимое папки Downloads, а затем сможем повторять эту задачу для любых других папок и с разными целями.

Задача

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

Возможные типы файлов:

  • изображения
  • документы
  • архивы
  • видео
  • торренты

Решение

К сожалению, Automator не поддерживает операции ветвления, т.е. создать конструкцию ЕСЛИ → ТО → ИНАЧЕ нельзя. Поэтому придется делать достаточно длительную линейную конструкцию, которая последовательно решит задачу.

Сортировку будем проводить по следующему принципу. Есть папка-основа Downloads, в ней созданы подпапки для всех типов данных: Изображения, Архивы, Видео и т.д.

1. Создаем новый автомат — Действие папки. Для решения задачи потребуются компоненты из раздела Файлы и папки и Утилиты, конкретно:

  • Установить значение переменной
  • Получить значение переменной
  • Получить указанные объекты Finder
  • Получить содержимое папок
  • Фильтровать объекты Finder
  • Переместить объекты Finder

as_arcSort

На скриншоте показан полностью рабочий цикл для изображений и архивов, создать дополнительные блоки для данного процесса труда не составит.

2. Создаем конструкцию как на изображении. Рассказываю по порядку что делаем:

  1. Чтобы добавить универсальности данному автомату, используем переменную, назовем её Целевая папка, в неё будет записываться информация о том, в какой папке мы собираемся делать сортировку данных.
  2. Получаем содержимое целевой папки, с которым в дальнейшем будем работать.
  3. Устанавливаем фильтр на содержимое, для получения списка файлов. Тут есть нюанс, для изображений можем легко выбрать предустановленный тип, а вот для архивов придется прописывать расширения самостоятельно.

    as_arcFilter

  4. Перемещаем объекты в целевую директорию.
  5. Добавляем блок чтения нашей переменной. Обязательно выставляя в параметрах значение: Игнорировать входные данные этого действия, иначе могут быть захвачены данные из прошлого шага итерации.
  6. Переходим к п.2, цикл повторять для каждого типа данных.

Совет 1: для ускорения процесса нахождения необходимых компонентов, можно использовать поиск в верхней части интерфейса автоматора. Сами компоненты быстро добавляются двойным кликом по ним.

as_quickFind

Совет 2: созданные автоматы можно добавлять к любой папке, просто кликнув по ней правой кнопкой и выбрав пункт Службы → Настройка действий папки…

as_folderAddAction

Заключение

Рассмотрен еще один вариант использования мощнейшего инструмента, и я продолжаю внимательно изучать комментарии о том, что автоматизировать еще. Предлагайте!

P.S. Ваши вопросы о сортировке почты я записал и работаю над статьёй.

1 Звезд2 Звезды3 Звезды4 Звезды5 Звезд (Проголосуйте первым за статью!)
undefined
iPhones.ru
В прошлый раз мы подняли тему мощнейшего инструмента в OSX — Automator. В комментариях я попросил указать задачи, которые бы Вам хотелось автоматизировать – получил оживленную реакцию. Задачи нашлись, начнем их решать! Для справки. Отто – именно так зовут робота, который изображен на иконке приложения Automator. На сегодня я отобрал простую и в тоже время...
Прокомментировать

🙈 Комментарии 34

  1. emeric avatar
    emeric3 мая 2015
    2

    Ну вот…все материалы только на русском языке…а если я юзаю Mac на английском? :)

    Виктор Колышев avatar
    6

    @emeric, ну если у вас интерфейс на английском, тогда видимо проблем с языком нет, сможете легко перевести :)

    Dexfir avatar
    Dexfir3 мая 2015
    4

    @Виктор Колышев, ну вот, а если я юзаю Мак на китайском? :)
    Какой вы непредусмотрительный..

  2. Егорка avatar
    Егорка3 мая 2015
    12

    Подобные статьи-уроки считаю крайне полезными и интересными, нежели отчеты о доходах разных команий, слухах и тому подобного. Автоматор штука интересная судя по всему! Будем следить за продолжением!!

  3. upup avatar
    upup3 мая 2015
    0

    А если это торрент файл, то он докатается сначала, а потом переместиться в другую папку?

    Виктор Колышев avatar
    3

    @upup, под торрент файлом подразумевается файл с расширением *.torrent
    Если настроить автоматический перенос, могут быть проблемы + все торренто-качалки умеют сами перемещать файлы в указанную папку.

    zrcl avatar
    zrcl5 мая 2015
    0

    @upup, Предлагаю вам решение: мюТоррент не умеет сортировать файлы, но умеет отправлять скачанные файлы в другую папку, начните сортировку автоматором в ней, так же, естественно, торрент может держать те файлы которые он качает в выбранной вами папке. Я сейчас пытаюсь заставить мюТоррент держать качаемые файлы в папке /Downloads/InProgress/ (туда же и .torrent кидаются автоматором, а мюТоррент их оттуда берет), готовые файлы кидать в /Downloads и оттуда их сортировать по остальным папкам.

  4. D@rkmind avatar
    D@rkmind3 мая 2015
    0

    А можно немного подробнее насчет переменной? Не очень понятно как она используется:
    – Какое значение проставляется в эту переменную? Почему именно оно (на workflow просто инструкция – установить значение переменной. А какое значение непонятно)
    – Как эта переменная дальше используется? В каких инструкциях? На схеме видно только что она устанавливается. А на что влияет не очевидно

    Виктор Колышев avatar
    0

    @D@rkmind, переменная – это единица хранения данных, в автоматоре она универсальная и может хранить как отдельный символ, так и длинные коллекции.
    В переменную подставляется значение действия, которое предшествовало её вызову, т.е. если это действие выбор папки, то в неё поместится путь к этой папке вместе с её названием. В нашем примере мы помещаем в неё нашу целевую папку, чтобы иметь возможность в дальнейшем к ней обращаться.

    На схеме она вызывается повторно после завершения действий с первым типом данных, в нашем случае Картинки. Это позволяет опросить папку повторно не учитывая те файлы, которые уже были перемещены.

    D@rkmind avatar
    D@rkmind3 мая 2015
    0

    @Виктор Колышев, Спасибо. Теперь более понятно. А где мы к ней обращаемся? Какая инструкция использует ее значение?

    Виктор Колышев avatar
    0

    @D@rkmind, её значение используется любой конструкцией, которая расположена сразу за вызовом данной переменной.
    Например, в нашем примере мы указали что в переменную требуется записать нашу начальную папку. В следующий раз мы вызываем нашу переменную, а сразу за ней компонент Получить содержимое папки. Т.е. переменная позволяет получить содержимое именно нашей папки, а не какой-то другой, так как целевая папка могла измениться из-за прошлой операции, например копирования/перемещения данных в другую папку.

  5. D@rkmind avatar
    D@rkmind3 мая 2015
    0

    Почему то инструкцию “Filter Finder Items” не удается заставить работать. Все остальное нормально – если ее убрать, то все файлы из папки Downloads перемещаются в указанную директорию.
    А вот если добавить Filter Finder Items, то никакие не перемещаются. Настроенно вроде как в статье (да и должно бы работать):
    “All of the following are true”. “Kind” “is” “image”

    Но ни jpg, ни png не перемещаются. Опять же, если Фильтр убрать, то перемещаются

    D@rkmind avatar
    D@rkmind3 мая 2015
    0

    че-то такое ощущение, что этот фильтр не работает от слова вообще. Пробовал менять All на Any. Пробовал менять image на text и подсовывать ему .txt файлы. Пробовал делать “File extension is txt”. Ни в каком виде не прокатывает. Может Йосэмити с ума сходит?

    Виктор Колышев avatar
    0

    @D@rkmind, есть подозрение, что где-то что-то пропускаете. Можно провести тестирование ввода данных, для этого в начало тела автомата поместите компонент Получить указанные объекты. После этого удалите все компоненты и по шагам их добавляйте, смотрите какой результат в каждом компоненте. Это позволит более точно понять где происходит сбой.

    Виктор Колышев avatar
    0

    @Виктор Колышев, скачайте мой вариант https://yadi.sk/d/MyaC9LZ9gQ7nY он точно рабочий

    DeNsKiY avatar
    DeNsKiY6 июля 2016
    0

    @Виктор Колышев, вот уже в течении года пытаюсь настроить по вышеописанной схеме – и никак не получается… Может зальете еще раз свой пример, я хоть на нем пойму свои ошибки… Вот у меня первый тип файлов фильтруется а дальше не идет…

    DeNsKiY avatar
    DeNsKiY6 июля 2016
    0

    @Виктор Колышев, ps пытался найти вас в мордобуке – безуспешно! =)))

  6. SevaGoodz avatar
    SevaGoodz3 мая 2015
    0

    Виктор, спасибо за цикл статей.

    Вот моя «хотелка». Никак не могу с помощью Automator и Hazel сделать следующее:

    есть папка (наприаер «Клиенты») и внутри неё папки по искомым фирмам (ООО, ОАО и так далее). При создании новой папки у меня настроено действие: ЕСЛИ new folder ТО create subfolder structure. Иначе говоря, как только я завожу новую папку под клиента, внутри неё формируется структра из подпапок («Докуметы», «Входящее», «Материалы» и так далее).

    Виктор, если возможность автоматически сделать расстановку в папках? Что я имею ввиду. Захожу в «Клиенты» (корень), а там ВСЕГДА все папки расставлены по имени. Захожу в клиентскую папку, а там всё расставлено ВСЕГДА по типу. То есть не надо ручками указывать для каждой папки, что мол здесь — по названию, а вот здесь — по типу.

    Уверен, что это не самый важный процесс автоматизации, но он помагает содержать всё в порядке и именно так, как удобно (иными словами — гибко). Если знаете решение (даже в теории) — намекните. Не могу составить грамотный поисковый запрос на английском, чтобы покапаться на форумах.

    Виктор Колышев avatar
    0

    @SevaGoodz, два дня думаю над вашей задаче, пока особо ничего не придумал, кроме как создавать папку не через классический способ, а через автоматор и соответственно создать под него автомат. Т.е. создаем папку, создаем структуру, а там устанавливаем какой вид должен использоваться. Но решение очень кривое и при смене вида, нужно будет опять менять руками.
    А так в автоматоре есть сменить вид папки, т.е. именно то что нужно вам.
    Еще вариант, это сделать отдельную кнопку, вытащить её в Finder и быстро менять вид при входе в один клик, но опять как-то костыльно.

  7. Chinik avatar
    Chinik3 мая 2015
    0

    Помогите пож-ста, почему у меня все “команды” в автоматоре на англ ?
    скрин http://cs623817.vk.me/v623817087/32fbb/9lEqt5KWH4c.jpg

    Chinik avatar
    Chinik3 мая 2015
    0

    @Chinik, Решение проблемы: Язык системы был
    1-Русский
    2-Английский
    3-Немецкий

    Удалил Немецкий, перезагрузил Автоматор – все стало на русском

    V83 avatar
    V833 мая 2015
    0

    @Chinik, перезапустите автоматор

  8. Surfer avatar
    Surfer3 мая 2015
    0

    А как насчет работы с внешними ресурсами в сети?
    Допустим у меня есть папка на рабочем столе(флешке), и я хочу её синхронизировать с облаком (любым), и что бы это происходило либо вручную, либо автоматически по времени..
    Возможно ли это с помощью автоматор? или есть какие другие софтины?

    Виктор Колышев avatar
    0

    @Surfer, можно сделать Сервис, который запускать раз в неделю и переносить содержимое папки, которого еще нет в целевой. Придется немного bash скрипт использовать.
    Опишите подробно что и как планируется получить.

  9. nikmurman avatar
    nikmurman3 мая 2015
    0

    Замечательная колонка! Автор молодец! Буду следить дальше.

  10. daskerwow avatar
    daskerwow4 мая 2015
    0

    Все конечно круто. Но ничего не понятно!!! что то кудлато нужно добавить, потом еще что то сделать. Я конечно понял что автор давно юзает Mac. Если хочешь поделиться знаниями, то пиши на языке тех людей которые откроют эту программу первый раз, а не так как будто я миллион раз в ней что то делал! Статья пустышка. полезной инфы ноль… Я так ни одной статьи и не нашел что бы нормально по русски расписали хоть один пример. Что бы тебя так в универе учили либо в школе. Да вот это сюда это так добавь вот это и все готова давай дерзай. И потом добавить осталось, да че тут сложного!!

  11. memuar avatar
    memuar4 мая 2015
    0

    У меня один вопрос – ЗАЧЕМ?
    Для подобного есть прекрасная вещь – Hazel, делается все в пару кликов и работает четко и стабильно.

  12. bykoff avatar
    bykoff4 мая 2015
    1

    Безграничность этого просто пугает! От этого хочется знать еще больше. Спасибо и продолжайте! :)

  13. ZeR0Co_0l.. avatar
    ZeR0Co_0l..5 мая 2015
    0

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

  14. ZeR0Co_0l.. avatar
    ZeR0Co_0l..5 мая 2015
    0

    И еще такая вещь – как сделать разберусь, но вот нюансы, вообщем собираюсь заставить автоматор перекидывать файлы на хард пока он подключен (не бэкап а просто фильмы) но вот что будет если я его отключу(при помощи eject естественно)? Какими файлы на диске будут понятно, но какова реакция самого автоматора на такие вещи?

  15. PiXcell avatar
    PiXcell14 мая 2015
    1

    Помогите собрать задание для автоматора?
    Задача: с сети переодически качается папка с файлами вида
    01 имя исполнителя и название песни.mp3
    02 имя исполнителя и название песни.mp3
    99 имя исполнителя и название песни.mp3
    100 имя исполнителя и название песни.mp3
    199 имя исполнителя и название песни.mp3
    (обычно имена исполнителя уникальны), требуется избавиться от начальных символов в именах файлов.
    Ручное переименование файлов утомительно :(

    Как дополнение, полученную папку с переименованными файлами добавить в тунец и чтоб не расползались по всей медиатеке сделать их одним альбомом с тегом NEW_ALBOM и одноименным плейлистом.

    __
    не смог самостоятельно разобраться как это сделать :(

  16. StoneLine avatar
    StoneLine19 сентября 2017
    0

    Здравствуйте! Подскажите пожалуйста, столкнулся с проблемой. Если Фильтровать объекты finder ничего не возвращает, то следующее действие с перемещением файлов падает с ошибкой, и дальше скрипт автоматора не выполняется. Следовательно остальные типы файлов не перемещаются, хотя подходящие по условиям в папке имеются. Как быть, как игнорировать пустой ответ фильтра?
    Спасибо.

  17. Arur_W avatar
    Arur_W14 января 2018
    0

    Добрый день!
    Как в AUTOMATOR:
    1. посмотреть созданные процессы (в частности действия для папок)
    2. как отключить созданные процессы, которые с течением времени например стали не нужны.

  18. karas_nur_li avatar
    karas_nur_li15 апреля 2019
    0

    Работало частично, пока не нашел ошибку у Вас: в блоке “фильтровать объекты Finder” параметр “Все” нужно изменить на “любой из”, иначе будут искаться файлы, содержащие в расширении и zip, и rar, и 7z. Теперь всё работает замечательно.

Вы должны авторизоваться или зарегистрироваться для комментирования.

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.

Как установить аватар в комментариях?

Ответ вот здесь