¿Cómo escribir un script que se ejecute cada vez que se agregue un nuevo archivo a un directorio específico?

Nunca he escrito una secuencia de comandos para OS X, y realmente no sé qué herramienta de secuencias de comandos usaré para esta tarea.

Aquí hay un pseudocódigo para el script que quiero construir:

whenever a new file X is added to the directory D do:
copy X 
paste X to the directory B

No quiero que alguien codifique esto por mí, quiero saber qué herramienta (tal vez lenguaje) debo usar para escribir este script y cómo hacer que OS X lo ejecute cada vez que ocurra el evento.

No sé qué etiquetar esto. Por favor contribuya. Redirigir si este no es el foro adecuado para esta pregunta.

Yo diría que primero intente usar AppleScript
¿Acciones de carpeta?

Respuestas (2)

Muy simple usando Automator & Folder Actions.

  • Haga una nueva acción de carpeta, luego configure la fuente en la carpeta A
  • seleccione una acción del Finder en la columna de la izquierda,
  • arrastre 'Copiar elementos del buscador' desde el centro hacia la derecha
  • establezca el destino en la Carpeta B.
  • Dale un nombre y guárdalo.

ingrese la descripción de la imagen aquí

Cada vez que se agregue algo a A, se copiará automáticamente a B.

Y si desea hacer algo más complicado, Automator tiene una acción 'Ejecutar script de shell' que puede usar con una serie de variaciones de script de shell, Ruby, Perl y Python. Si sigue esta ruta, recomendaría quedarse con sh/bash o cualquier idioma con el que se sienta más cómodo.
Descubrí que hay un error en esta simple acción de Automator en el sentido de que si un archivo ya existe en A y responde Reemplazar, no se copia en B. Esto se probó en OS X 10.8.5 y podría no serlo. un problema en otras versiones de OS X.
¡Gracias! También tuve que hacer clic derecho en la carpeta en el Finder y hacer clic en "Configuración de acciones de carpeta"> "Ejecutar servicio"> agregar la acción a la carpeta allí. (mac OS 11.6)

Solo puedo pensar en dos formas que requieren paquetes de terceros (gratuitos):

1er. Un paquete llamado perro guardián para monitorear eventos del sistema de archivos y desencadenar acciones. En realidad, es un paquete de python, pero también incluye una utilidad de shell para que pueda crear scripts desde la terminal sin tener que codificar.

2do. use un pequeño programa llamado fswatch que usa la API de eventos del sistema de archivos de Mac OS para monitorear sus archivos y carpetas, y puede activar secuencias de comandos.

Ambos requieren que instales el paquete/programa y parecen hacer lo que necesitas. Espero que esto al menos te apunte en la dirección correcta.