iPhones.ru

Учимся работать с 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. На сегодня я отобрал простую и в тоже время...
Здесь можно оставить комментарий! Для этого авторизуйтесь или зарегистрируйтесь на iPhones.ru.

34 комментариев

Форум →
  1. emeric avatar
    emeric 3 мая 2015
    2

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

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

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

    Dexfir avatar
    Dexfir3 мая 2015
    4

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

    Войди на сайт, чтобы ответить
    Ответить
  2. Егорка avatar
    Егорка 3 мая 2015
    12

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

    Войди на сайт, чтобы ответить
    Ответить
  3. upup avatar
    upup 3 мая 2015
    0

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

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

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

    zrcl avatar
    zrcl5 мая 2015
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  4. D@rkmind avatar
    D@rkmind 3 мая 2015
    0

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

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

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

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

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

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

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

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

    Войди на сайт, чтобы ответить
    Ответить
  5. D@rkmind avatar
    D@rkmind 3 мая 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
    SevaGoodz 3 мая 2015
    0

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

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

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

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

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

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

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

    Войди на сайт, чтобы ответить
    Ответить
  7. Chinik avatar
    Chinik 3 мая 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
    Surfer 3 мая 2015
    0

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

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

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

    Войди на сайт, чтобы ответить
    Ответить
  9. nikmurman avatar
    nikmurman 3 мая 2015
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  10. daskerwow avatar
    daskerwow 4 мая 2015
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  11. memuar avatar
    memuar 4 мая 2015
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  12. bykoff avatar
    bykoff 4 мая 2015
    1

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

    Войди на сайт, чтобы ответить
    Ответить
  13. ZeR0Co_0l.. avatar
    ZeR0Co_0l.. 5 мая 2015
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  14. ZeR0Co_0l.. avatar
    ZeR0Co_0l.. 5 мая 2015
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  15. PiXcell avatar
    PiXcell 14 мая 2015
    1

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

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

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

    Войди на сайт, чтобы ответить
    Ответить
  16. StoneLine avatar
    StoneLine 19 сентября 2017
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  17. Arur_W avatar
    Arur_W 14 января 2018
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  18. karas_nur_li avatar
    karas_nur_li 15 апреля 2019
    0

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

    Войди на сайт, чтобы ответить
    Ответить
Помни о правилах — если начал оффтопить, то не удивляйся потом.

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

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