Les balises OSX Mavericks sont-elles visibles depuis la ligne de commande?


13

Par exemple, supposons que j'ai une structure de répertoires telle que

/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]

À partir de la ligne de commande, y a-t-il un moyen que je peux utiliser ls(ou quelque chose comme ça) pour afficher tous les fichiers marqués comme "Math"?

EDIT: J'ai créé un outil appelé tfindqui fait cela: https://github.com/tlehman/bin/blob/master/tfind



1
J'appuie la recommandation tagde James Berry à https://github.com/jdberry. Vous pouvez l'installer via brew install tag, ajouter une balise via tag -a <tag> <file>, rechercher des balises via tag -f <tag1, tag2>. Très, très pratique, je l'utilise tout le temps.
— Chris Conover

Oui, obtenez définitivement la tagcommande. S'installe très facilement via l'infusion.
— Jacob

Réponses:


11

Je suppose qu'ils seront un xattr comme ils le sont actuellement sur 10.8.3 (et plus anciens)

Actuellement, vous pouvez afficher les attributs étendus d'un fichier avec ls -l@.

Mais pour voir le contenu des attributs, vous devez utiliser xattr.


Vous aviez raison, les balises sont stockées sous forme de xattr
— tlehman

Pour votre information: Avec OS X El Capitan, je la commande, xattr -pl com.apple.metadata:_kMDItemUserTags filename. Cependant, ce n'était pas une sortie très conviviale.
— LS

13

Oui, vous pouvez trouver des fichiers qui ont une balise utilisateur donnée en utilisant mdfind.

Créez un fichier et attribuez-lui une balise personnalisée dans le Finder.

Allez ensuite dans un terminal; vous le trouverez avec:

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

ou

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

Voir aussi -onlyin aFolderpour restreindre la recherche.

Je n'ai pas vérifié la complexité de ces expressions booléennes, mais ces deux exemples fonctionnent.

Vous pouvez diriger la sortie lscomme ceci:

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

De plus, mdfind a une option "-0"

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

ce qui peut être pratique avec des noms de fichiers désagréables.


Le problème avec cette méthode est qu'elle ne trouve pas tous les fichiers, renvoyant uniquement un sous-ensemble de fichiers (éventuellement vide).
— markvgti

3
Il semble qu'ils ont introduit une procédure simplifiée mdfindsyntaxe des balises, par exemple: mdfind "tag:Math",mdfind "tag:Math OR tag:Programming"
— WJV

1
@AntoineLecaille J'ai 295 fichiers dans un répertoire avec le tag "Orange" (le Label Orange avant de passer à Mavericks). Cette commande n'en répertorie que 11. Ont également de nombreux fichiers étiquetés "verts" --- cette commande ne trouve aucun d'entre eux.
— markvgti

1
@wjv J'ai utilisé la syntaxe que vous avez suggérée et j'ai obtenu exactement les mêmes résultats que ceux énumérés ci-dessus.
— markvgti

1
@markvgti Ensuite, prenez un fichier Orange qui se trouve avec cette commande et un qui ne l'est pas, et trouvez les différences avec xattr ou mdls?
— alecail

4

Vous pouvez obtenir toutes les balises d'un fichier avec:

mdls -name kMDItemUserTags filename


Cela semble être l'inverse de ce qui a été demandé. Votre commande vide toutes les balises d'un seul fichier. Je pense que l'OP veut connaître tous les fichiers avec une seule balise.
— bmike

2
Toujours utile. Cela répond à la question que j'avais quand je suis allé sur Google et je me suis retrouvé ici. S'il n'y a pas un autre Q / A qui couvre cela, cela pourrait valoir la peine de poster et de répondre vous-même.
— Slipp D. Thompson,
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.