Elenca tutti i tag nel terminale in Mavericks?

5

È possibile elencare tutti i tag già definiti in OS X nel Terminale?

So che ci sono alcune applicazioni di terze parti che elencano tutti i tag, ma voglio solo usare Terminal per trovare tutti i tag, poiché uso questo strumento per lavorare con i tag in Terminale (ma sfortunatamente lo strumento non fornisce tag di elenco per un intero sistema - elenca solo uno o più file selezionati arbitrariamente).

Grazie.

    
posta Blaszard 01.12.2013 - 11:44
fonte

5 risposte

4

Il nome del tag è in ~/Library/Preferences/com.apple.finder.list .

Puoi leggerlo con

defaults read com.apple.finder.plist ViewSettingsDictionary

Sarà necessario un po 'di analisi per essere un po' più chiaro:

defaults read com.apple.finder.plist ViewSettingsDictionary | 
    awk 'NR%12==2'| grep -o '".*"' |  sed 's/^.\(.*\).\{18\}$//'

Un'altra possibilità è l'analisi del plist come xml. Per farlo dovrai prima convertire il plist da binario a xml usando.

plutil -convert xml1 ~/Library/Preferences/com.apple.finder.plist

    
risposta data 01.12.2013 - 14:19
fonte
5

Puoi anche utilizzare tag :

tag -tgf \*|grep '^    '|cut -c5-|sort -u

tag -f \* trova tutti i file con tag, -t include nomi di tag nell'output e -g stampa ciascun tag su una riga separata.

    
risposta data 13.12.2013 - 07:56
fonte
3

Puoi anche usare mdfind in combinazione con mdls per ottenere lo stesso risultato:

/usr/bin/mdfind -0 "(kMDItemUserTags == '*')" |xargs -0 mdls -name kMDItemUserTags |grep '^    ' |cut -c5- |cut -d , -f 1 |sort -u

Sarebbe interessante fare un benchmark, quale è più veloce.

    
risposta data 16.12.2013 - 20:58
fonte
2

Tale elenco non è completo. Sono solo i tag aggiunti tramite il Finder. C'è un file aggiuntivo ~/Library/SyncedPreferences/com.apple.finder.plist , che elenca anche i tag che sono stati manipolati in Finder.

Se hai taggato un file in Terminal o hai utilizzato un altro strumento e non hai mai manipolato i tag in Finder, i tag non saranno in nessuno dei due elenchi.

    
risposta data 12.12.2013 - 16:04
fonte
2

Colore seguito dal percorso:

/usr/bin/mdfind -0 "(kMDItemUserTags == '*')" | xargs -I % sh -c 'echo $(mdls -name kMDItemUserTags % | grep "^ " |cut -c5-) %'

    
risposta data 05.02.2014 - 15:17
fonte

Leggi altre domande sui tag