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

13

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 en que pueda usar ls (o algo así) para mostrar todos los archivos etiquetados como "Matemáticas"?

EDITAR: hice una herramienta llamada tfind que hace esto: enlace

    
pregunta tlehman 14.06.2013 - 18:29

3 respuestas

11

Supongo que serán un xattr como están actualmente en 10.8.3 (y mayores)

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

Pero para ver el contenido de los atributos, debes usar xattr .

    
respondido por el demure 14.06.2013 - 18:54
13

Sí, puedes encontrar archivos que tengan una etiqueta de usuario determinada usando mdfind .

Cree un archivo y asígnele una etiqueta personalizada en el Finder.

Entonces ve en una terminal; Lo encontrarás con:

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

o

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

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

No comprobé qué tan complejas pueden ser estas expresiones booleanas, pero estos dos ejemplos funcionan.

Puedes canalizar la salida a ls de esta manera:

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 (''
mdfind "kMDItemUserTags == Math || kMDItemUserTags == Programming"
'') as a path separator, for use with xargs -0.

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

    
respondido por el alecail 23.10.2013 - 17:50
4

Puedes obtener todas las etiquetas de un archivo con:

mdls -name kMDItemUserTags filename

    
respondido por el Christian A. Strømmen 23.10.2013 - 01:22

Lea otras preguntas en las etiquetas