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

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

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

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

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

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

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

Установить значение переменной. Указываем имя Путь к папке. Запустить Shell-скрипт. В нем пишем: echo ${1##*/} и не забываем проставить опцию: Передать ввод → как аргументы Установить значение переменной. Создаем новую переменную Имя папки, которой будет присвоен результат работы из п.2 ВНИМАНИЕ Получить значение переменной, в этом пункте обязательно выставляем параметр: Игнорировать входные данные этого действия. Получить содержимое папок Переименовать объекты 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. И я надеюсь, что вы будете пробовать, экспериментировать и учиться решать свои задачи максимально удобным способом.

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

мы тестируем кнопки UpToLike

©  iphones.ru