Учимся работать с Automator. Умное переименование

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

Продолжаем рассматривать примеры использования Automator в повседневной жизни.
В первой статье в комментариях был задан вопрос: как сделать автоматической переименование файлов на основании имени папки.

ar_comment

Попробуем решить данную задачу максимально красиво.

Задача

Произвести автоматическое переименование файлов в папке, проигнорировав предыдущее имя. В качестве нового имени использовать название папки и инкрементальный индекс.

Для решения задачи потребуются следующие компоненты:

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

Я помню, что обещал не лезть в дебри скриптования – к сожалению, без этого задачу решить не получится. Но команда будет короткой, а я подробно объясню, что она делает и как работает.

Начинаем как всегда, с создания нового автомат — Действие папки. Затем добавляем компоненты, для упрощения, вставляю их прямые названия без склонений.

  1. Установить значение переменной. Указываем имя Путь к папке.
  2. Запустить Shell-скрипт. В нем пишем: echo ${1##*/} и не забываем проставить опцию: Передать ввод → как аргументы
  3. Установить значение переменной. Создаем новую переменную Имя папки, которой будет присвоен результат работы из п.2
  4. ВНИМАНИЕ Получить значение переменной, в этом пункте обязательно выставляем параметр: Игнорировать входные данные этого действия.
  5. Получить содержимое папок
  6. Переименовать объекты Finder. Так как нам не требуется сохранять прошлое имя и цель стоит в построение последовательности имен, то выбираем пункт: Сделать последовательным. После чего получим интерфейс, где требуется указать новое имя, в него подставляем нашу переменную Имя папки, а дальше все интуитивно понятно.

ar_workflow

Теория

Теперь пройдем по неявным местам. Сделаем это в формате вопрос/ответ.

Q. Зачем усложнять и делать две разных переменных, да еще и обрабатывать первую скриптом.

A. Если попробовать использовать переменную Путь к папке, то система её возвращает не просто как имя, например Кафе, а в виде полного пути /Users/iPhones/Desktop/Кафе, что не очень подходит в качестве имени для файлов. Но и это еще не все, при непосредственном переименовании происходит трансляция данного пути во внутренний формат операционной системы, итоговое имя примет вид: $(B1421039-E0DA–4111-A00D-DF47E1ADF07)_01.jpg.Поэтому мы вынуждены использовать вторую переменную и скрипт.

Q. Что за команда echo ${1##*/}

A. Команда echo – обозначает вывод значения на экран, в нашем случае оно сразу попадает в переменную. Если бы мы написали:

echo $1

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

Конкретно, двойной ##, — удаляющий самую длинную часть строки, предшествующую шаблону. А шаблоном в нашем случае выступает чаcть */, обозначающая любые символы, в любом количестве, перед символом косой черты.

Примеры:

$A = /User/iPhones/Desktop/Кафе
Обозначаем переменную, в нашем случае используется $1, так как она получена автоматически из прошлого действия автоматора

$ echo ${A}
/User/iPhones/Desktop/Кафе
простой вывод значения, без обработки

$ echo ${A#i}
Phones/Desktop/Кафе
просим вывести всё, что следует после первого вхождения буквы i

$ echo ${A#iP}
hones/Desktop/Кафе
аналогично, но обратите внимание, что удаляется всё что было до совпадения, в том числе и оно само

$ echo ${A#*/}
User/iPhones/Desktop/Кафе
очень похоже на наш вариант, отсчет идет сначала строки

$ echo ${A##*/}
Кафе
наш случай, отсекаем все лишнее левее символа косой черты, анализ начинается с конца строки

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

Заключение

Сегодня мы ступили на чуть более сложный путь познания возможностей Automator. И я надеюсь, что вы будете пробовать, экспериментировать и учиться решать свои задачи максимально удобным способом.

Понятно, что компьютер это инструмент и не обязательно уметь на нем программировать, но это знание позволяет использовать его более эффективно.

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

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

  1. Red_Baron avatar
    Red_Baron4 мая 2015
    0

    Wow. Надо попробовать. Автор еще про Automator… )

  2. V83 avatar
    V834 мая 2015
    0

    Скрипт склеивает PDF файлы в один многостраничный https://yadi.sk/d/QTc85tJxgRGVZ

  3. V83 avatar
    V834 мая 2015
    1

    Скрипт создает образ DMG, файлы класть в папку
    https://yadi.sk/d/d4YmzTDjgRHPe

  4. Red_Baron avatar
    Red_Baron4 мая 2015
    0

    Чет криворукий я. Ввел комнду echo ${A##*/} а в папке он мне указывает пустое имя с приставкой цифры. Например бросал в папку Test файл с именем Vary.pdf, в папке переименовало в -01.pdf вместо нужного test-01.pdf. Где я ошибся, подскажите пожалуйста.

    iFilipis avatar
    iFilipis4 мая 2015
    0

    @Red_Baron, надо писать echo ${1##*/} Переменную $1 задает автоматор, я так полагаю

  5. direless avatar
    direless4 мая 2015
    0

    Статья, выносящая мозг. Макинтош с человеческим лицом.

    Запустить Винду.
    Запустить Total Commander.
    Отметить файлы для переименовки, Ctr+M

    Сделать все, что нужно. Извините, что так просто.

    bezromval avatar
    bezromval5 мая 2015
    0

    @direless, запустить винду…хм

    admiless avatar
    admiless5 мая 2015
    0

    @direless, и так каждый раз, если нужно добавить к имеющимся, переименовать снова все заново, иначе будет ругаться, что такой файл существует.
    тут один раз, далее просто запустить процес, по необзодимости.
    Извините, что все намного удобнее.

    airslider avatar
    airslider7 мая 2015
    0

    @direless, на первом пункте у меня сбой. Что делать?

    direless avatar
    direless7 мая 2015
    0

    @airslider,

    Изучать статью ! Все должно получиться, напишут и для OSX файловый менеджер рабочий.

  6. Innerspace avatar
    Innerspace4 мая 2015
    0

    Зачем для такой простейшей задачи использовать сторонний софт? о_О Есть же вроде bash на маке или его аналог.

    Александр avatar
    Александр5 мая 2015
    1

    @Innerspace, Вы точно пользовалось маком? Там Automator родная прога как бы…

    Innerspace avatar
    Innerspace5 мая 2015
    0

    @Александр, маком я точно не пользовалось. Потому и спрашиваю.
    ОК, зачем вообще какой-то еще софт если есть баш и никсовые тулсеты? Все равно же в этом автоматоре скрипты писать надо. В чем смысл?

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

    @Innerspace, многие вещи в автоматоре можно делать без скриптования + у него намного ниже порог входа чем в баше. Ну и самое главное, под автоматор есть много действий, которые специально для работы с внешним ПО созданы и на баше этого сделать просто нельзя, например сменить вид папок, отправить почтовое сообщение и т.п. вещи.

  7. t-n avatar
    t-n5 мая 2015
    1

    Нормуль статья

  8. Distress avatar
    Distress5 мая 2015
    3

    Виктор, спасибо Вам большое за данный цикл статей!

  9. dazer avatar
    dazer5 мая 2015
    0

    Разве средствами системы поставленную задачу решить нельзя? https://support.apple.com/kb/PH19067?locale=ru_RU&viewlocale=ru_RU

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

    @dazer, так данный процесс позволяет автоматически переименовывать контент в папке на основании её имение. Т.е. делаете такую папку, кидаете в неё файлы, а они всегда имеют единообразное имя. А по ссылке это просто операции переименования.

  10. bezromval avatar
    bezromval5 мая 2015
    0

    А автоматом может прописывать id3 теги в файлы alac?

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

    @bezromval, да, умеет добавлять тэги, но насчет alac не уверен. Могли бы подробнее сформировать запрос, тогда станет понятнее. Например, на основании названия файла нужно: внести информацию о названии песни и её номере в альбоме, на основании названия папки внести данные о названии алтьбома и т.д.

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

    @bezromval, нужно подумать, цель: разобрать строку по символу /, но есть проблема, куда потом эти данные сохранять, поэтому возьму таймаут проверить.

  11. bykoff avatar
    bykoff5 мая 2015
    2

    Виктор продолжайте пожалуйста этот цикл! Все нужное. Спасибо!

  12. Pahanius avatar
    Pahanius5 мая 2015
    0

    А можно ли как-то с помощью Automator или других программ или действий сделать так, чтобы приложение Photos само сканировало и забирало новые фотки из какой-нибудь специальной папки (у меня это Яндекс.Диск)? iCloud не интересует.

    Innerspace avatar
    Innerspace5 мая 2015
    0

    @Pahanius, если у него есть API соответствующий, то можно.

  13. fatushkto avatar
    fatushkto5 мая 2015
    0

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

    Innerspace avatar
    Innerspace5 мая 2015
    0

    @fatushkto, если есть конвертер pages -> excel, который можно запускать в неинтерактивном режиме, то да.

    Innerspace avatar
    Innerspace5 мая 2015
    0

    @fatushkto, еще можно просто в csv сохранять таблицы. Правда, форматирования не будет никакого. Я надеюсь, маковые таблицы сохраняются в csv.

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

    @fatushkto, Pages вроде аналог Word, может быть речь о Numbers?

  15. SevaGoodz avatar
    SevaGoodz7 мая 2015
    0

    Виктор, есть задача.

    Идёт переписка с людьми. Необходимо архивировать письма в документ по каждой ветке обсуждения (теме сообщения) в pdf файл. Разумеется нужен паттерн названия (дата – email — название темы, например).
    Это всё необходимо складывать в определённые папки на диске. Как пожелание, возможность добавить комментарий spotlight.

  16. ilcom avatar
    ilcom14 мая 2015
    0

    Есть одна задача, состоящая из двух:
    Обе работать должны в фоновом режиме.

    Первая:
    1. делать скриншоты экрана каждые 30 секунд, причем не всей области, а только активного окна (или хотя бы без строки с датой и временем).
    2. Если скрин не равен предыдущему сохраненному – сохраняем его.
    3. Конвертируем сохраненное в самый легкий формат.
    4. Называем гггг-мм-дд-чч-мм-сс.jpg в скрытой папке на компе.

    Вторая:
    1. Раз в час папку со скриншотами сохраняем в контейнер.
    2. Контейнер отправляем на указанный майл или сообщение или папку дропбокса.
    3. Удаляем отправленный контейнер.

    Насколько реально сделать автоматором?

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

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

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

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

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