Мое первоначальное предложение по этой проблеме состояло в том, чтобы заменить действия, которые вы в данный момент выполняете в рабочем процессе Automator, действием Run AppleScript , использующим эту команду:
tell application "Finder" to get every item ¬
in the (path to documents folder) ¬
whose modification date < ((current date) - 30 * days) ¬
and label index is not 2
После этого вы либо добавили бы действие для удаления этих элементов, либо изменили get every item
бы его delete every item
в сценарии. Однако, как указал @ user3439894 , это не будет проходить по деревьям папок, поэтому любые элементы внутри папки, которые старше 30 дней (и не помечены красным), не будут обнаружены.
Следующий скрипт представляет собой пример метода, который использует рекурсию для спуска по дереву каталогов, удаляя файлы (или помечая их для удаления), по мере продвижения:
property D : {} # The files to delete
property R : path to documents folder # The root of the directory tree structure
property age : 30 * days
property red : 2
descend into R
# tell application "Finder" to delete D
return D
to descend into here
local here
tell application "Finder"
# Mark files which are older than 30 days for deletion
# EXCEPT any that are tagged red
set end of D to every file in here whose label index is not red ¬
and modification date < (current date) - age
# This checks to see if, following the purge, the
# current folder will become empty. If so, it can
# be deleted too. It adds to processing time, so
# remove this code block if you don't need it.
count the last item of D
if the result is equal to (count the files in here as alias list) ¬
and (count the folders in here) is 0 then
set the end of D to here
return
end if
# This ensures folders tagged red and their contents
# are spared from the purge
get the folders in here whose label index is not 2
repeat with F in the result
set F to the contents of F # de-referencing
descend of me into F
end repeat
end tell
end descend
Я кратко проверил его на моей довольно сложной древовидной структуре, и оказалось, что она успешно работает. Тем не менее, я пишу это и тестирую, хотя и устала, но, тем не менее, я всегда настоятельно советую вам проверить этот скрипт самостоятельно на фиктивных файлах и папках, чтобы убедиться, что он работает. Пожалуйста, сообщите о том, как это происходит, включая - если они возникнут - любые ошибки, с конкретными подробностями о том, как я могу воспроизвести ошибку самостоятельно.