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.