Поскольку вы не слишком четко понимали тип рабочего процесса Automator, который я создал, я сосредоточусь в первую очередь на коде, который вы используете в действии Run Shell Script .
В следующем примере Automator рабочий процесс был создан File > New > Workflow в Automator с Get Selected Finder Items действия и Run Shell Script действие добавил к нему, с настройками , как показано на изображении ниже дальше.
Тестирование проводилось с помощью выбора , содержащего как файлы и папки , которые включали как реальные цели из Automator рабочих процессов «s Run Shell Script действия , и другие , как будто случайно выбранных , если вы будете. Со следующими файлами и папками, выбранными в Finder :
.
├── Archive.zip
├── Folder_Name_1
├── Folder_Name_2
├── Folder_Name_3
├── Foobar
└── Foobar.txt
Следующее расширенное древовидное представление выбранных файлов и папок, показанных выше, очевидно, содержит оба файла, которые не являются реальными целями рабочего процесса, а также папку, не содержащую ожидаемого содержимого. Это было сделано для проверки того, что пример bash
кода работает, как ожидалось.
.
├── Archive.zip
├── Folder_Name_1
│ └── Converted_Files
│ ├── file1.aiff
│ └── file2.aiff
├── Folder_Name_2
│ └── Converted_Files
│ ├── file1.aiff
│ └── file2.aiff
├── Folder_Name_3
│ └── Converted_Files
│ ├── file1.aiff
│ └── file2.aiff
├── Foobar
│ └── Barfoo
│ └── More Foobar.txt
└── Foobar.txt
8 directories, 9 files
После запуска рабочего процесса из Automator для выбранных файлов и папок в Finder ниже показано новое расширенное древовидное представление исходного расширенного древовидного представления выбора :
.
├── Archive.zip
├── Folder_Name_1
│ ├── file1.aiff
│ └── file2.aiff
├── Folder_Name_2
│ ├── file1.aiff
│ └── file2.aiff
├── Folder_Name_3
│ ├── file1.aiff
│ └── file2.aiff
├── Foobar
│ └── Barfoo
│ └── More Foobar.txt
└── Foobar.txt
5 directories, 9 files
Как вы можете видеть на изображении ниже, и в сочетании с информацией , представленной выше, Automator рабочий процесс завершается без ошибок и обрабатываются только соответствующие целевые папки , даже если дополнительные , не являющиеся объектами были отправлены в Run Shell Script действия , как показано выше.
Также отмечу , что дополнительное тестирование было сделано с целевыми папками , на /Folder_Name_N/Converted_Files/
которых не .aiff
содержание , чтобы гарантировать , что другие то перемещаемое .aiff
содержание не должно быть явно удалено, например , rm .DS_Store
не была необходимостью, так как -r
опция в rm
команде будет пытаться удалить иерархии файлов с корнем в каждый аргумент файла . Вы также можете рассмотреть возможность использования этой -f
опции . (Я уже добавил его в мой пример bash
кода , поэтому удалите его, если вы не хотите использовать эту опцию .)
Пример bash
кода для запуска оболочки сценария действий :
for d in "$@"; do
[ -d "$d" ] || continue
if [ -d "$d/Converted_Files" ]; then
cd "$d/Converted_Files" || exit
for f in *.aiff; do
mv "$f" ..
done
fi
cd ..
rm -rf "Converted_Files"
done
Обратите внимание, что пример bash
кода является только этим, и может не содержать всю обработку ошибок, которая может быть уместной / необходимой / требуемой. Пользователь всегда должен реализовать любую подходящую / нужную / желаемую обработку ошибок с любым кодом, выбранным для использования.
Тестирование проводилось под macOS High Sierra 10.13.6.