Cómo hacer una carpeta inteligente como una carpeta física con los contenidos combinados de dos carpetas

Tengo una aplicación que busca sus files de datos (* .txt) en una carpeta. Tengo dos carpetas que contienen datos de text que debo mantener separados, pero sería útil que la aplicación vea los files de datos de text como residentes en una carpeta (que contiene los dos sets de files).

Puedo crear una secuencia de commands que mantenga enlaces simbólicos a los files en las dos carpetas en una tercera carpeta combinada.

  • ¿Cómo funciona exactamente el nuevo sistema de files Mountain Lion?
  • ¿Por qué la vista previa cambia el ctime de un pdf y cómo puedo deshabilitarlo?
  • Los files y carpetas en el escritorio se renombran automáticamente a "?
  • Montar particiones / imágenes con filesystems Linux
  • ¿Un disco lento Time Machine afecta el performance general de Mac?
  • Acción de carpeta para la limpieza automática del nombre de file
  • En lugar de redevise la rueda, me gustaría usar una solución probada si es posible.

    La solución tendría que lidiar con el caso de los conflictos de nombre de file de una manera sensata.

  • Insertar líneas en blanco en un file RTF con AppleScript
  • Unir líneas en una sola línea en TextEdit
  • Applescript: cadena hasta la date
  • Activar búsqueda rápida de files de text sin la extensión .txt
  • AppleScript: ¿Cómo extraer la sección de la cadena (en function de los caracteres definidos)?
  • ¿Cómo puedo elegir dinámicamente citas inteligentes o no inteligentes?
  • 2 Solutions collect form web for “Cómo hacer una carpeta inteligente como una carpeta física con los contenidos combinados de dos carpetas”

    Puedes usar launchd .

    launchd te permite administrar daemons y agentes de acuerdo con ciertas condiciones.

    ¿Qué son demonios y agentes?

    Del man launchd :

    Un "daemon" es, por definición, un service de todo el sistema del que hay una instancia para todos los clientes. Un "agente" es un service que se ejecuta por usuario. Los daemons no deben intentar mostrar UI o interactuar directamente con la session de inicio de session de un usuario. Cualquier y todo el trabajo que implica interactuar con un usuario debe hacerse a través de agentes.

    De http://developer.apple.com/library/mac/#technotes/tn2083/_index.html :

    Los demonios y agentes, conocidos colectivamente como progtwigs en segundo plano, son progtwigs que operan sin ninguna interfaz gráfica de usuario. Como desarrollador, puede usar progtwigs en segundo plano para realizar acciones sin la interacción del usuario, y también para administrar un estado compartido entre varios otros progtwigs.

    La diferencia entre un agente y un daemon es que un agente puede mostrar la GUI si lo desea, mientras que un daemon no puede. La diferencia entre un agente y una aplicación normal es que un agente generalmente no muestra GUI (o una GUI muy limitada).

    El daemon / agente se describe en un file XML con extensión plist. Una de las condiciones que se pueden controlar son los cambios en una carpeta . Esto será de utilidad.

    OK, ensuciémonos las manos:

    Digamos que estas son las 2 carpetas donde usted y su amigo guardan sus files:

     /tmp/folderstuart /tmp/folderstuartsfriend 

    y esta es la carpeta común para la aplicación:

     /tmp/folder 

    Queremos monitorear las dos routes anteriores y sincronizar sus contenidos con la /tmp/folder .

    Este es el plist que hace lo que necesitamos:

     <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>notesfoldersync</string> <key>ProgramArguments</key> <array> <string>/usr/bin/rsync</string> <string>-aE</string> <string>--delete</string> <string>--exclude='.*'</string> <string>/tmp/folderstuart/</string> <string>/tmp/folderstuartsfriend/</string> <string>/tmp/folder</string> </array> <key>WatchPaths</key> <array> <string>/tmp/folderstuart</string> <string>/tmp/folderstuartsfriend</string> </array> <key>ThrottleInterval</key> <integer>10</integer> </dict> </plist> 

    El plist supervisa las dos carpetas con los WatchPaths key (vea http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html#//apple_ref/doc/uid/10000172i- SW7-SW8 ).

    Sugiero el progtwig rsync para sincronizar carpetas. Option --delete garantiza que los files eliminados en las carpetas supervisadas también se eliminen en la /tmp/folder . Otras opciones son -aE para copyr los attributes estándar y extendidos HFS +, y --exclude='.*' Para omitir .localized , .DS_Store y otros files ocultos.

    Agregué ThrottleInterval en caso de que quiera establecer el intervalo mínimo en el que se puede generar un trabajo. El valor pnetworkingeterminado es 10 s, es decir, los trabajos no se generarán más de una vez cada 10 segundos.

    Guarde el plist (vea man launchd para get una list de posibles paths) como:

      /System/Library/LaunchDaemons/notesfoldersync.plist 

    Crear:

     /tmp/folderstuart /tmp/folderstuartsfriend /tmp/folder 

    y cargar (es decir, habilitar) el plist:

     sudo launchctl load /System/Library/LaunchDaemons/notesfoldersync.plist 

    Ahora crea un file en /tmp/folderstuart :

     touch /tmp/folderstuart/file.txt 

    y observe cómo sucede la magia: file.txt se creará en cuestión de segundos en la /tmp/folder . Eliminarlo y desaparecerá de la /tmp/folder . También sincronizará los files creados o eliminados en /tmp/folderstuartsfriend .

    ¡Observe que esta solución no maneja colisiones de nombres! Si no puede asegurarse de que los nombres serán nombrados de manera diferente, sustituya rsync por un script que rsyncs y verifique el nombre del file para evitar la pérdida de datos.

    Si copyr files no es una opción, sustituya rsync por un script que cree enlaces duros (si ambos files están en el mismo sistema de files, recomendaría enlaces duros en lugar de enlaces simbólicos). Antes de cambiar el plist descárgalo:

     sudo launchctl unload /System/Library/LaunchDaemons/notesfoldersync.plist 

    Cuando termines, cárgalo nuevamente.

    ¿Por qué no utilizar una palabra key o un Comentario de Spotlight para labelr los files en cada carpeta, y luego una carpeta inteligente para mostrarlos juntos?

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).