OSX Mavericks etiketleri komut satırından görünür mü?


13

Örneğin,

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

Komut satırından, ls"Matematik" olarak etiketlenmiş tüm dosyaları görüntülemek için kullanabileceğim bir yol var mı (ya da buna benzer bir şey)?

EDIT: Bunu yapan adlı bir araç yaptım tfind: https://github.com/tlehman/bin/blob/master/tfind



1
tagJames Berry için tavsiye ikinci https://github.com/jdberry. Aracılığıyla yükleyebilir brew install tag, etiketi ekleyebilir tag -a <tag> <file>, etiketleri bulabilirsiniz tag -f <tag1, tag2>. Çok, çok kullanışlı, her zaman kullanıyorum.
— Chris Conover

Evet, kesinlikle tagemri al. Demleme yoluyla kolayca monte edilir.
— Jacob

Yanıtlar:


11

Ben şu anda 10.8.3 (ve daha eski) gibi bir xattr olacak sanıyorum

Şu anda, bir dosyanın hangi genişletilmiş özniteliklere sahip olduğunu görebilirsiniz ls -l@.

Ancak özelliklerin içeriğini görmek için kullanmanız gerekir xattr.


Haklıydınız, etiketler bir xattr
— tlehman

FYI: OS X El Capitan ile komutunu kullandım xattr -pl com.apple.metadata:_kMDItemUserTags filename. Ancak, çok kolay çıktı değildi.
— LS

13

Evet, kullanarak belirli bir kullanıcı etiketine sahip dosyaları bulabilirsiniz mdfind.

Bir dosya oluşturun ve dosyayı Finder'da özel bir etiket atayın.

Sonra bir terminale gidin; ile bulacaksınız:

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

veya

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

-onlyin aFolderAramayı sınırlamak için ayrıca bakın .

Bu boole ifadelerinin ne kadar karmaşık olabileceğini kontrol etmedim, ancak bu iki örnek işe yarıyor.

Çıkışı şu şekilde lsborulandırabilirsiniz:

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

Ayrıca, mdfind "-0" seçeneğine sahiptir

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

kötü dosya adları ile pratik olabilir.


Bu yöntemin sorunu, tüm dosyaları bulamaması ve yalnızca (muhtemelen boş) bir dosya alt kümesi döndürmesidir.
— markvgti

3
Onlar basitleştirilmiş sunduk görünür mdfind: etiketleri, örneğin için sözdizimi mdfind "tag:Math",mdfind "tag:Math OR tag:Programming"
— wjv

1
@AntoineLecaille "Turuncu" etiketi olan bir dizinde 295 dosya var (Mavericks'e yükseltmeden önce Turuncu Etiket). Bu komut sadece 11 tanesini listeliyor. Ayrıca "Yeşil" etiketli birçok dosya var --- bu komut hiçbirini bulamıyor.
— markvgti

1
@wjv Sizin önerdiğiniz sözdizimini kullandım ve yukarıda listelediğim sonuçların aynısını aldım.
— markvgti

1
@markvgti Sonra bu komutla bulunan ve olmayan bir Turuncu dosyayı alın ve xattr veya mdls?
— alecail

4

Bir dosyanın tüm etiketlerini şununla alabilirsiniz:

mdls -name kMDItemUserTags filename


Bu, sorulanın tersi gibi görünüyor. Komutunuz tüm etiketleri bir dosyaya atar. Bence OP tek bir etiketle tüm dosyaları bilmek istiyor.
— bmike

2
Yine de faydalı. Google'a gittiğimde ve burada sona erdiğimde soruya cevap veriyor. Bunu kapsayan farklı bir soru-cevap yoksa, birisini kendiniz göndermek ve cevaplamak için çaba göstermeye değer olabilir.
— Slipp D. Thompson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.