¿Hay alguna forma 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 está verificando si se ha agregado algún archivo recientemente.
¿Hay alguna forma 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 está verificando si se ha agregado algún archivo recientemente.
Puede agregar una acción "Ejecutar shell script" con el comando:
find <directory> -newermm <reference_file>
Esto le dará todos los archivos y directorios dentro de <directory>
que han cambiado desde la última modificación de <reference_file>
. Solo asegúrese de modificar el <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. P.ej. para buscar solo directorios modificados después de <reference_file>
:
find <directory> -type d -newermm <reference_file>
Si la versión que viene con OSX no es suficiente, también puedes probar la versión que viene con findutils
(brew, macports, etc.) que debería tener un poco más de funciones.
No conozco una forma de hacer esto con Automator, pero hay una aplicación en la App Store llamada Folder Watch que puede hacer lo que le pidas.
La última vez que lo comprobé, 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 descubrir cuándo se borra algo), no creo que pueda calcular los cambios en un archivo.
Lo que realmente necesitas para 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 en cualquier momento que se cambie el contenido de una carpeta. Lingon (vea también su obsoleta La página SourceForge ) es una gran aplicación para ayudar a las personas a saltar a launchd. Puede escribir su aplicación / secuencia de comandos automator para hacer lo que planeaba hacer cuando se modificó su directorio y simplemente pedirle a la tarea launchd.
Puede consultar en una de mis respuestas anteriores , pero suena como si quisieras
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 el foco.
EDITAR: Estoy completamente equivocado aquí. Launchd tiene exactamente la funcionalidad requerida, es decir: hacer algo en un archivo o cambio de directorio.
Usted crea un archivo .plist.
Scream "XML SUX FOR CONF FILES!" (Realmente lo hace.)
y querrá usar una o las dos claves a continuación en su trabajo 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.