Досі не зовсім зрозуміло, що ви намагаєтеся досягти, однак, ось приклад робочого процесу, який може бути корисним.
Перший робочий процес автоматизатора
- Розбитий на два робочих сегменти:
Перший сегмент:
- Запитайте предмети пошуку
- Перейменуйте елементи пошуку: додайте текст
- Копіювання елементів пошуку
- Запустіть сценарій оболонки
- Налаштування: Shell: bin / bash та Pass input: як аргументи
- Замініть код за замовчуванням на код нижче.
- Це те, що використовується для видалення до та включення
$
до базового імені файлу .
Код для Run Shell Script дій :
cd "$(dirname "$1")"
for f in "$@"
do
mv "$(basename "$f")" "$(printf "$(basename "$f")" | sed -E 's/^.*\$//')"
done
echo "$(ls -1)"
- Примітка:
echo "$(ls -1)"
команда не є дійсно необхідною в цьому прецеденті і була використана в даному прикладі, щоб показати імена файлів були змінені і показати , що в результатах панелі .
Оновлення: Новий код Run Shell Script дій :
Використовуйте цей код замість оригінального коду , вище. Я змінив це, щоб бути дещо ефективнішим, коли потрібно дзвонити basename
один раз, а не два рази. (Я не оновив код в Run Shell Script дії в оригінальному документі нижче.)
cd "$(dirname "$1")"
for f in "$@"; do
n="$(basename "$f")"
mv "$n" "$(printf "$n" | sed -E 's/^.*\$//')"
done
echo "$(ls -1)"
Примітка. Див. Також другий робочий процес Автоматизатора , показаний після вихідного зображення нижче, що заперечує необхідність у другому сегменті:, оскільки його дія Run Shell Script кодується для обробки перейменування, яке відбувається у другому сегменті, додаючи та заміняючи на . prefix-
-proc
-suffix
Другий сегмент:
- Запитайте предмети пошуку
- Параметри: [√] Ігнорувати введення цієї дії
- Перевіривши цю опцію, ви побачите, що на зображенні нижче знайдено потрібний відключення між попередньою дією та цією.
- Перейменуйте елементи пошуку: додайте текст
- Перейменуйте елементи пошуку: додайте текст
Інші застосовні налаштування дій Автоматизатора див. На зображенні нижче , як показано в ОП.
Як ви бачите на зображенні нижче, всі дії успішно виконані та виконані так, як запрограмовано, в області результатів кожної дії відображаються результати її дії .
Другий робочий процес автоматизатора
Використовується замість першого робочого процесу Автоматизатора.
- Запитайте предмети пошуку
- Перейменуйте елементи пошуку: додайте текст
- Копіювання елементів пошуку
- Запустіть сценарій оболонки
- Налаштування: Shell: bin / bash та Pass input: як аргументи
- Замініть код за замовчуванням на код нижче зображення.
- Результати перших трьох дій в цьому другому Automator процесу є точно такий же , як показано в першому робочому процесі вище, тому я залишив Результати панелі приховані для цих дій . Тим НЕ менше, результати панель для Run Shell Script дій показує результати розшукуваних.
Код для Run Shell Script дій в Workflow Другий Automator:
p='prefix-'
s='-suffix'
t='-proc'
cd "$(dirname "$1")"
for f in "$@"; do
n="$(basename "$f")"
if [[ $n =~ ^.*\$.*${t}\.${n##*.} ]]; then
mv "$n" "${p}$(printf "${n%.*}" | sed -E -e "s/$t/$s/" -e 's/^.*\$//').${n##*.}"
fi
done
echo "$(ls -1)"
- Примітка до оновлення. Я змінив код , розмістивши присвоєння змінної поза
for
циклом , оскільки це єдиний код, який вам потрібно буде / хочете змінити за необхідності (і вони не повинні бути в for
циклі ). Я не оновлював зображення робочого процесу Automator, щоб відобразити це оновлення.
Ви можете, якщо потрібно / захотіли, додати інший другий сегмент до цього другого робочого процесу , але код у цій дії сценарію запуску оболонки виключає потребу в двох елементах пошуку перейменування: додайте текстові дії, які були у другому сегменті першого ( оригінал), робочий процес .
Примітка: Я буду оновлювати це з поясненням того , що код робить в Run Shell Script дію , як тільки зможу.
(anItem as text)
.