13 votos

¿Son visibles las etiquetas de OSX Mavericks desde la línea de comandos?

Por ejemplo, supongamos que tengo una estructura de directorios como

/Users
    /tlehman
        /Math
            algebraic_varieties.tex [tagged: Math, Documentation]
            projective_geometry.pdf [tagged: Math]
        /Development
            visualize_surfaces.py   [tagged: Math, Programming]
            solve_polynomials.scm   [tagged: Math]
    /guest
        /Desktop
            welcome.rtf             [tagged: Documentation]
/Volumes
    /USBKey
        assignments_for_may.txt     [tagged: Math]
        using_LaTeX.pdf             [tagged: Documentation]

Desde la línea de comandos, ¿hay alguna forma de utilizar ls (o algo parecido) para mostrar todos los archivos etiquetados como "Math"?

EDIT: He creado una herramienta llamada tfind que hace esto: https://github.com/tlehman/bin/blob/master/tfind

2 votos

1 votos

Apoyo la recomendación de tag por James Berry en https://github.com/jdberry . Puede instalarlo a través de brew install tag añadir una etiqueta a través de tag -a <tag> <file> , encontrar etiquetas a través de tag -f <tag1, tag2> . Muy, muy práctico, lo uso todo el tiempo.

0 votos

Sí, sin duda hay que conseguir el tag mando. Se instala a través de brew muy fácilmente.

13voto

paxdiablo Puntos 341644

Sí, puede encontrar archivos que tengan una etiqueta de usuario determinada utilizando mdfind .

Crear un archivo y asignarle una etiqueta personalizada en el Finder.

Entonces entra en un terminal; lo encontrarás con:

mdfind "kMDItemUserTags == Math || kMDItemUserTags == Programming"

o

mdfind "kMDItemUserTags == Math && kMDItemUserTags == Programming"

Ver también -onlyin aFolder para restringir la búsqueda.

No he comprobado lo complejas que pueden ser estas expresiones booleanas, pero estos dos ejemplos funcionan.

Puede canalizar la salida a ls así:

mdfind "kMDItemUserTags == mathTag || kMDItemUserTags == anotherTag" \
| while read f; do ls "$f"; md5 "$f"; done

Además, mdfind tiene una opción "-0"

    -0                Use NUL (``\0'') as a path separator, for use with xargs -0.

que puede ser práctico con nombres de archivo desagradables.

0 votos

El problema de este método es que no encuentra todos los archivos, devolviendo sólo un subconjunto (posiblemente vacío) de archivos.

3 votos

Parece que han introducido un sistema simplificado mdfind sintaxis para las etiquetas, por ejemplo mdfind "tag:Math" , mdfind "tag:Math OR tag:Programming"

0 votos

@markvgti ¿Qué archivos no encuentra este comando?

11voto

demure Puntos 833

Supongo que serán un xattr como lo son actualmente en 10.8.3 (y anteriores)

Actualmente, se puede ver qué atributos extendidos tiene un archivo con ls -l@ .

Pero para ver el contenido de los atributos, hay que utilizar xattr .

0 votos

Tenías razón, las etiquetas se almacenan como un xattr

0 votos

FYI: Con OS X El Capitan, he utilizado el comando, xattr -pl com.apple.metadata:_kMDItemUserTags filename . Sin embargo, no fue una salida muy amigable.

4voto

Puedes obtener todas las etiquetas de un archivo con:

mdls -name kMDItemUserTags filename

0 votos

Esto parece ser lo contrario de lo que se pedía. Su comando vuelca todas las etiquetas de un archivo. Creo que el OP quiere saber todos los archivos con una etiqueta.

2 votos

Aun así, es útil. Responde a la pregunta que tenía cuando busqué en Google y acabé aquí. Si no hay un Q/A diferente que cubra esto, podría valer la pena el esfuerzo de publicar y responder uno tú mismo.

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