¿Hay alguna manera de verificar si hay cambios en una carpeta / archivo (incluye agregar archivos, eliminar archivos, cambios en archivos, ...). La 'Acción de carpeta' en Automator solo verifica si se agregaron archivos recientemente.
¿Hay alguna manera de verificar si hay cambios en una carpeta / archivo (incluye agregar archivos, eliminar archivos, cambios en archivos, ...). La 'Acción de carpeta' en Automator solo verifica si se agregaron archivos recientemente.
Respuestas:
Puede agregar una acción "Ejecutar script de Shell" con el comando:
find <directory> -newermm <reference_file>
Esto le dará todos los archivos y directorios dentro <directory>
que han cambiado desde el último cambio de <reference_file>
. Solo asegúrese de modificar <reference_file>
cada vez que ejecute el script de Automator.
También eche un vistazo a la página de búsqueda de manual (ingrese man find
en el terminal) para obtener más opciones. Encontrar es muy poderoso y refinar aún más su búsqueda es generalmente una cuestión de un par de opciones adicionales. Por ejemplo, para buscar solo directorios modificados después de <reference_file>
:
find <directory> -type d -newermm <reference_file>
Si la versión que se incluye con OSX no es suficiente, también puede probar la versión que viene con findutils
(brew, macports, etc.) que debería tener un poco más de funciones.
Así que la última vez que lo revisé, Automater está usando Applescript en segundo plano para escribir sus acciones. Applescript no tiene mucha profundidad. Si bien puede obtener la lista de archivos en un directorio (y, por lo tanto, podría averiguar cuándo se elimina algo), no creo que pueda calcular los cambios en un archivo.
Lo que realmente necesita aprovechar son las notificaciones del sistema de archivos. Y como es una bestia, tomaría el consejo de kraymer y usaría launchd. Tiene ganchos para ejecutar cada vez que se cambia el contenido de una carpeta. Lingon (ver también su página obsoleta de SourceForge ) es una gran aplicación para ayudar a las personas a lanzarse a la plataforma. Puede escribir su script / aplicación de automatización para hacer lo que estaba planeando hacer cuando se modificó su directorio y simplemente hacer que la tarea launchd lo llame.
Puedes consultar una respuesta anterior mía , pero parece que quieres
fs_usage -f filesys
Launchd no es el camino a seguir para los cambios de archivos, fs_usage usa la máquina subyacente que impulsa la atención.
EDITAR: Estoy completamente equivocado aquí. Launchd tiene exactamente esa funcionalidad requerida, es decir: hacer algo en un archivo o cambio de directorio.
Haces un archivo .plist.
Grita "¡SUX XML PARA ARCHIVOS CONF!" (Realmente lo hace)
y querrás usar una o ambas de las siguientes teclas en tu trabajo de launchd.
WatchPaths <array of strings>
This optional key causes the job to be started if any one of the listed
paths are modified.
QueueDirectories <array of strings>
Much like the WatchPaths option, this key will watch the paths for modi-
fications. The difference being that the job will only be started if the
path is a directory and the directory is not empty.