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