Mi sugerencia inicial al problema fue reemplazar las acciones que tiene actualmente en su flujo de trabajo Automator con una acción Ejecutar AppleScript que usa este comando:
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
Luego, habría agregado una acción después de esto para desechar esos elementos, o cambiar get every item
a delete every item
en el script. Sin embargo, como lo señaló @ user3439894 , esto no atravesará los árboles de carpetas, por lo que cualquier elemento dentro de una carpeta que se encuentre más de 30 días (y no etiquetado en rojo) escapará a la detección.
La siguiente secuencia de comandos es un ejemplo de un método que utiliza la recursión para descender a través del árbol de directorios, eliminando archivos (o marcándolos para eliminarlos) a medida que avanza:
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
Lo probé brevemente en mi propia estructura de árbol bastante compleja, y pareció funcionar correctamente. Sin embargo, estoy escribiendo esto y probándolo mientras estoy bastante cansado, pero independientemente de eso, siempre recomendaría encarecidamente que pruebe este script en archivos y carpetas ficticios para asegurarse de que funciona. Por favor, informe sobre cómo va, incluyendo, si surgen, cualquier error, con detalles específicos sobre cómo puedo reproducir el error yo mismo.