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