1 votos

¿Carpetas dinámicas verdadera (no un SavedSearch "Carpeta inteligente") es posible?

Estoy usando una aplicación que carga el contenido de una carpeta de muestras de audio para mi uso. Las muestras que desea utilizar sin embargo, se encuentran dispersas entre muchas carpetas en mi máquina, y no quiero copiar todas en una sola carpeta en primer lugar.

Alias funciona muy bien, y yo era capaz de hacer enlaces simbólicos de todos los archivos que desee, ponerlos en una carpeta, y la carga de esa carpeta. Excelente solución, excepto por una cosa.

Voy a añadir más archivos a largo plazo que cumplan con los criterios que uso para esta aplicación. Me encantaría ser capaz de utilizar una dinámica carpeta que sería esencialmente lo que "Carpetas Inteligentes" son, con la excepción de un real carpeta. Un Mac "Carpeta Inteligente" no es en realidad una carpeta en todos, pero en realidad sólo crea un "SavedSearch de archivo", que es ilegible salvo por el Finder para que mi aplicación no se puede ver el interior.

Es posible crear una verdadera dinámica de la carpeta que se acaba de actualizar, como el sistema de ficheros cambios? O tal vez ser en tiempo real sería demasiado de un tirón, así que en un programa? Pude ver tal vez inventar algo en Automator, pero... no lo sé, suena un poco pesado. Amor para saber si hay una mejor manera!

2voto

klanomath Puntos 19587

He encontrado una solución para crear una dinámica de "enlace simbólico" de la carpeta:

Prefacio:

  • $HOME es el resultado de la variable ambiental en CASA aquí. Al iniciar la sesión como usuario example_user, $HOME es la ruta a la carpeta de inicio de example_user: /Users/example_user. Si $HOME aparece en el texto a continuación, usted tiene que reemplazar a ti mismo con /Usuarios/your_user_name/ (por ejemplo, ahorro el lanzamiento del agente). Si $HOME aparece en un cuadro de código de abajo (por ejemplo, en la secuencia de comandos de shell) que se expande automáticamente a tu carpeta de inicio por el (bash) shell mientras se ejecuta la secuencia de comandos.
  • mdimport -A|sed $'s/\t\t/;/g;s/(null)//g'|tr -d \' muestra una gran cantidad de atributos de metadatos para elegir como criterios de búsqueda (por ejemplo, kMDItemAudioBitRate o kMDItemDurationSeconds)
  • mdls /path/to/file listas de todos los atributos de metadatos de un archivo elegido

La creación de un vínculo dinámico de la carpeta:

  • Crear un script de shell samples.sh en $HOME/bin/sh/ con el siguiente contenido:

    #!/bin/bash
    
    # Define folders
    # Source folder (including files in subfolders)
    MusicSamples=$HOME/Music/Samples
    # Destination folder
    DrumFoldr=$HOME/Desktop/Samples
    
    # Remove orphaned soft links in the destination folder
    find $DrumFoldr -type l -exec sh -c 'for x; do [ -e "$x" ] || rm "$x"; done' _ {} +
    
    # Add soft links in destination folder depending on some criteria (here: BitRate and UserTag)
    for File in $(mdfind -onlyin $MusicSamples 'kMDItemAudioBitRate >= "44000"  && _kMDItemUserTags = "Sample"')
    do
        ln -s $File $DrumFoldr
    done
    
    # Remove soft links in the destination folder depending on some criteria (removing UserTag from original file)
    for File in $(mdfind -onlyin $MusicSamples '_kMDItemUserTags != "Sample"')
    do
        filename=$(basename "$File")
        rm $DrumFoldr/$filename
    done
    

    En la secuencia de comandos de shell definir su música de la carpeta que contiene los archivos de ejemplo (en mi ejemplo, que una de las Muestras de la carpeta en la carpeta de Música) y el "DrumFoldr" que contiene los enlaces simbólicos más tarde (en mi ejemplo, que una de las Muestras carpeta en mi Escritorio).

    Ahora elija algunos criterios de búsqueda de Spotlight (en mi ejemplo he elegido la tasa de bits y definido por el usuario, la etiqueta de "Muestra" - puede definir el usuario etiquetas haciendo clic derecho en un archivo > Etiquetas... y la adición de una etiqueta por escribir algo. La etiqueta definida por el usuario está disponible para otros archivos y carpetas.

    enter image description here

    La anterior secuencia de comandos de shell va a agregar sólo los archivos con una velocidad de muestreo de 44000 o superior y (esto es un y lógico!) con el usuario de la etiqueta de "Muestra" como suave enlace a la DrumFoldr carpeta. Así que el destino de la carpeta no contiene enlaces a los archivos sin la Muestra de la etiqueta, pero con una frecuencia de muestreo de 96 mil o archivos con la Muestra de la etiqueta, pero sin un kMDItemAudioBitRate (como archivos txt o pdf). También hace un poco de limpieza en la DrumFoldr carpeta.

    BTW: la música de longitud se pueden buscar/determinado por el uso de la clave kMDItemDurationSeconds: kMDItemDurationSeconds <= "2".

  • Crear un archivo usr.samplesync.plist en $HOME/Library/LaunchAgents (que significa: /Users/<username>/Library/LaunchAgents/) con el contenido:

    <?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>usr.samplesync</string>
        <key>ProgramArguments</key>
        <array>
            <string>/bin/bash</string>
            <string>/Users/<username>/bin/sh/samples.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>10</integer>
    </dict>
    </plist>
    

    Reemplace <username> por su nombre de usuario. La secuencia de comandos de shell se ejecuta cada 10 segundos. Usted puede aumentar el intervalo dependiendo de sus necesidades y entorno a valores más altos (por ejemplo, 60 = 1 minuto o 600 = 10 minutos)

  • Carga el lanzamiento del agente con:

    launchctl load $HOME/Library/LaunchAgents/usr.samplesync.plist
    

Si desea guardar la secuencia de comandos de shell en alguna parte usted tiene que aplicar la ruta de acceso en el plist en consecuencia.


Advertencias:

  • la muestra original de los archivos no debe contener espacios en sus rutas de acceso o nombres de archivo (intento de resolver esta restricción posterior)
  • la muestra original de los archivos no debe ser movido o la eliminación de la etiqueta user no eliminar el enlace simbólico

Cosas a mejorar:

  • no crear un enlace simbólico si uno ya existe

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X