¿Está buscando cambios de carpeta / archivo usando Automator?


9

¿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.


No creo que esto sea nativamente posible con Automator. Probablemente podría hacer algo con algunas secuencias de comandos (y las acciones de secuencias de comandos si necesita que funcionen dentro de Automator), pero tendría que ejecutar el flujo de trabajo para detectar cambios desde la última ejecución.
jtjacques

Respuestas:


5

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 finden 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.


1

No conozco una manera de hacer esto con Automator, pero hay una aplicación en la App Store llamada Folder Watch que puede hacer lo que estás pidiendo.


1

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.


1

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.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.