2 votos

Etiquetado automático de archivos que se abrieron por última vez hace más de x días

Quiero configurar un proceso para que se ejecute cada día e identificar los archivos que se abrieron por última vez hace x días, luego aplicar una etiqueta como "revisar" a esos archivos. Esos archivos aparecerán etiquetados en Finder con el color / etiqueta apropiado y esa etiqueta se podrá buscar.

¿Automator es la mejor apuesta y, de ser así, ¿alguien tiene un script que haga algo como esto a lo que me pueda referir?

4voto

user3439894 Puntos 5883

Cuando un archivo está etiquetado en el Finder tiene un atributo extendido en él:

      com.apple.metadata:_kMDItemUserTags

Información General

La forma más sencilla que he encontrado para aplicar una personalizada etiqueta a un archivo de programación es utilizar xattr para obtener el valor de una de encargo de la etiqueta, no es uno de los por defecto de las etiquetas, y aplicar el archivo de destino(s) a través de una secuencia de comandos de shell. Por ejemplo, he creado un nuevo custom tag denominado Revisión, dándole el color amarillo. Su hex representación es:

62706C6973743030A101585265766965770A35080A0000000000000101000000000000000200000000000000000000000000000013 

      Sugerencia: Mouse sobre el y de desplazamiento horizontal para ver el código completo.

Para obtener el valor de la costumbre de la etiqueta's com.apple.metadata:_kMDItemUserTags de atributo extendido, después de haber fijado normalmente en el Finder, en el ejemplo siguiente comando compuesto se utiliza en la Terminal, por ejemplo:

xattr -px com.apple.metadata:_kMDItemUserTags "/path/to/file" | tr -d '\n' | tr -d ' '

      Sugerencia: Mouse sobre el y de desplazamiento horizontal para ver el código completo.

  • Nota: Cuando se utiliza el ejemplo de arriba compuesto de comando en el símbolo del sistema no se devuelve como normal y es justo después de la hexagonal de la cadena en lugar de estar en la línea siguiente, así que cuando la copia de la hexagonal de la cadena asegúrese de no copiar cualquiera de los pronta!

La salida de la xattr comando para ver la salida estándar sería, por ejemplo:

$ xattr -l "/path/to/file"
com.apple.metadata:_kMDItemUserTags:
00000000  62 70 6C 69 73 74 30 30 A1 01 58 52 65 76 69 65  |bplist00..XRevie|
00000010  77 0A 35 08 0A 00 00 00 00 00 00 01 01 00 00 00  |w.5.............|
00000020  00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 13                                   |.....|
00000035
$

      Sugerencia: Mouse sobre el y de desplazamiento horizontal para ver el código completo.

Sin embargo, para este propósito sólo el hexagonal de la cadena que se quiere, por lo tanto el uso de la -px opción previamente, y por qué la tubería de la salida a la tr comando para eliminar los saltos de línea, \n, y los espacios es necesario.

La Aplicación De Etiqueta Personalizada

Para aplicar esta personalizado etiqueta en la Terminal a un archivo de prueba, utilice por ejemplo:

xattr -wx  com.apple.metadata:_kMDItemUserTags '62706C6973743030A101585265766965770A35080A0000000000000101000000000000000200000000000000000000000000000013' "/path/to/file"

      Sugerencia: Mouse sobre el y de desplazamiento horizontal para ver el código completo.

  • Nota: El xattr el hombre de la página muestra un ejemplo de copiar los atributos extendidos de un directorio a otro, que puede ser aplicada a los archivos demasiado, sin embargo, para una solución de programación prefiero este método. Ver man xargs en Terminal para obtener información adicional.

Programático De Uso

Esto podría ser utilizado en un bash secuencia de comandos o en Automator el uso de un Ejecutar el Shell Script de acción, sin embargo el Encontrar Buscador de Elementos de acción y Filtro del Buscador de los Elementos de la acción de Automator tiene un error con la Fecha de la última vez que abrió la configuración.

Esto deja el uso de la find comando o la mdfind comando, siendo este último el mejor en la búsqueda de los archivos por la Fecha de la Última Abierto como se muestra en el Buscador en la Lista de la vista o el Obtener Información de la hoja para un determinado archivo, que es el kMDItemLastUsedDate atributo se utiliza con el mdfind de comandos utilizando adecuadamente formada consulta. Tenga en cuenta que mdfind requiere de la Indexación de Spotlight de la meta del directorio, y está activado de forma predeterminada.

En la Terminal, este comando compuesto usos de ejemplo mdfind para localizar los archivos de la coincidencia de la consulta y su resultado pasó a xargs de ejecución xattr sobre los archivos para aplicar la costumbre de la etiqueta:

mdfind -0 -onlyin "$HOME/Documents" 'kMDItemLastUsedDate > $time.today(-7) && kMDItemLastUsedDate < $time.today(-6)' | xargs -0 -I % xattr -wx com.apple.metadata:_kMDItemUserTags '62706C6973743030A101585265766965770A35080A0000000000000101000000000000000200000000000000000000000000000013' %

      Sugerencia: Mouse sobre el y de desplazamiento horizontal para ver el código completo.

Cómo esta se presenta envuelto en una secuencia de comandos de shell o en Automator el uso de un Ejecutar el Shell Script de acción y programada para que se ejecute a intervalos regulares realmente depende de cómo uno tiene la intención de programar y otros criterios en torno a cómo uno se propone tomar en cuenta su uso y otros controles para no acaba de funcionar salvaje, si se quiere.

Probablemente elegiría a utilizar launchd programar esta como bash script y mantenerse alejado de Automator, que es dependiendo de qué otra cosa es querer ser una parte del proceso general.

Para propósitos de prueba, bajo macOS Alta de la Sierra, esto es lo que hice:

1. Crear un bash script con el ejemplo mdfind comando compuesto de arriba.

En La Terminal:

mkdir ~/bin
cd ~/bin
touch crtag
open -e crtag

El último comando de arriba, de forma predeterminada, abra crtag, para [C]ustom[R]eview[Etiqueta], en TextEdit, en el que las líneas siguientes se añadieron:

#!/bin/bash

mdfind -0 -onlyin "$HOME/Documents" 'kMDItemLastUsedDate > $time.today(-7) && kMDItemLastUsedDate < $time.today(-6)' | xargs -0 -I % xattr -wx com.apple.metadata:_kMDItemUserTags '62706C6973743030A101585265766965770A35080A0000000000000101000000000000000200000000000000000000000000000013' %

      Sugerencia: Mouse sobre el y de desplazamiento horizontal para ver el código completo.

Guardado el p. ej. crtag documento y cerrado.

De vuelta en la Terminal, hecha crtag ejecutable, por ejemplo:

chmod 0755 crtag

      Nota: 0755 se traduce en: -rwxr-xr-x

2. Crear un PLIST archivo para launchd a ejecutar el por ejemplo crtag script de shell diaria en el momento deseado.

En La Terminal:

cd ~/Library/LaunchAgents
touch com.my.DateLastOpenedCustomReviewTag.plist
open -e com.my.DateLastOpenedCustomReviewTag.plist

El último comando de arriba, de forma predeterminada, abra com.mi.DateLastOpenedCustomReviewTag.plist en TextEdit, en el que las líneas siguientes se añadieron:

<?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>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:</string>
    </dict>
    <key>Label</key>
    <string>com.my.DateLastOpenedCustomReviewTag</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>/path/to/script</string>
    </array>
    <key>RunAtLoad</key>
    <false/>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>9</integer>
            <key>Minute</key>
            <integer>00</integer>
        </dict>
    </array>
</dict>
</plist>

Mientras que el establecimiento de /path/to/script a la real nombre completo de la ruta, por ejemplo /Users/me/bin/crtag, y el tiempo como se muestra en la <key>Hour</key>, <integer>9</integer> y <key>Minute</key>, <integer>00</integer> claves, que utiliza 24 Horas de tiempo.

Guardado el por ejemplo, com.mi.DateLastOpenedCustomReviewTag.plist documento y cerrado.

De vuelta en la Terminal, cargó a la por ejemplo, com.mi.DateLastOpenedCustomReviewTag.plist archivo para launchd a ejecutar la secuencia de comandos de shell, por su configuración:

launchctl load com.my.DateLastOpenedCustomReviewTag.plist


Ahora, cada día, en por ejemplo las 9:00 AM, los archivos de la reunión de la mdfind consulta tendrá la costumbre de la etiqueta , con lo que se puede ver en el Finder de las Etiquetas de sección en la barra Lateral, o en otro Buscador de métodos que implican las Etiquetas.



Nota: Consulte las páginas de manual en el Terminal para mdfind, launchd, launchctl, tr, xargs y xattr, por ejemplo man mdfind. También tiene una mirada en: los Metadatos del Archivo de Sintaxis de expresiones de Consulta

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