क्या OSX Mavericks टैग कमांड लाइन से दिखाई दे रहे हैं?


13

उदाहरण के लिए, मान लीजिए कि मेरे पास एक निर्देशिका संरचना है जैसे कि

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

कमांड लाइन से, क्या कोई ऐसा तरीका है जिसे मैं ls"मठ" के रूप में टैग की गई सभी फाइलों को प्रदर्शित करने के लिए (या ऐसा कुछ) उपयोग कर सकता हूं ?

EDIT: मैंने एक टूल बनाया है tfindजो यह करता है: https://github.com/tlehman/bin/blob/master/tfind


2
देखें github.com/jdberry/tag
mankoff

1
मैं tagजेम्स बेरी द्वारा दूसरी बार सिफारिश करता हूं https://github.com/jdberry। आप इसके माध्यम से स्थापित कर सकते हैं brew install tag, के माध्यम से एक टैग जोड़ सकते हैं , के माध्यम से टैग tag -a <tag> <file>पा सकते हैं tag -f <tag1, tag2>। बहुत, बहुत काम, मैं इसे हर समय उपयोग करता हूं।
क्रिस कॉनोवर

हां, tagआज्ञा जरूर लें । काढ़ा के माध्यम से बहुत आसानी से स्थापित करता है।
जैकब

जवाबों:


11

मुझे लगता है कि वे एक xattr होंगे जैसे वे वर्तमान में 10.8.3 पर हैं (और पुराने)

वर्तमान में, आप देख सकते हैं कि फ़ाइल के पास कौन से विस्तारित गुण हैं ls -l@

लेकिन विशेषताओं की सामग्री को देखने के लिए, आपको उपयोग करना होगा xattr


आप सही थे, टैग
tlehman

FYI करें: OS X El Capitan के साथ, मैंने कमांड का उपयोग किया xattr -pl com.apple.metadata:_kMDItemUserTags filename,। हालांकि, यह बहुत अनुकूल आउटपुट नहीं था।
एलएस

13

हां, आप उन फ़ाइलों को पा सकते हैं जिनमें किसी उपयोगकर्ता द्वारा उपयोग किया गया टैग है mdfind

एक फ़ाइल बनाएँ और इसे खोजक में एक कस्टम टैग असाइन करें।

फिर एक टर्मिनल में जाएं; आप इसे इसके साथ पाएंगे:

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

या

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

-onlyin aFolderखोज को प्रतिबंधित करने के लिए भी देखें ।

मैंने यह जाँच नहीं की कि ये बूलियन भाव कितने जटिल हो सकते हैं, लेकिन ये दो उदाहरण काम करते हैं।

आप lsइस तरह से आउटपुट को पाइप कर सकते हैं :

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

इसके अलावा, mdfind में एक विकल्प है "-0"

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

जो गंदा फ़ाइल नाम के साथ व्यावहारिक हो सकता है।


इस पद्धति के साथ समस्या यह है कि यह सभी फाइलों को नहीं ढूंढती है, केवल फाइलों का (संभवतः खाली) उप-सेट लौटाती है।
निशान्वती

3
ऐसा प्रतीत होता है कि वे एक सरल शुरू की है mdfind: टैग, उदाहरण के लिए वाक्य रचना mdfind "tag:Math",mdfind "tag:Math OR tag:Programming"
wjv

1
@AntoineLecaille मेरे पास "ऑरेंज" टैग के साथ एक निर्देशिका में 295 फाइलें हैं (Maiticks में अपग्रेड करने से पहले ऑरेंज लेबल)। यह आदेश उनमें से केवल 11 को सूचीबद्ध करता है। "ग्रीन" को भी कई फ़ाइलों को टैग किया गया है --- यह आदेश उनमें से कोई भी नहीं पाता है।
मार्कवगी

1
@wjv मैंने आपके द्वारा सुझाए गए वाक्यविन्यास का उपयोग किया और जैसा मैंने ऊपर सूचीबद्ध किया था, वैसा ही परिणाम मिला।
निशान्वती

1
@markvgti फिर एक ऑरेंज फ़ाइल लें जो इस कमांड के साथ मिली है और एक जो नहीं है, और xattr या mdls के साथ अंतर पाते हैं?
alecail

4

आप एक फ़ाइल के सभी टैग प्राप्त कर सकते हैं:

mdls -name kMDItemUserTags filename


यह पूछा गया कि क्या उलटा था। आपकी कमांड एक फाइल के सभी टैग्स को डंप करती है। मुझे लगता है कि ओपी एक टैग के साथ सभी फाइलों को जानना चाहता है।
bmike

2
फिर भी, उपयोगी। यह मेरे उस प्रश्न का उत्तर देता है जब मैंने गोगल किया और यहाँ समाप्त हुआ। यदि कोई अलग क्यू / ए नहीं है जो इसे कवर करता है तो यह अपने आप को पोस्ट करने और जवाब देने के प्रयास के लायक हो सकता है।
स्लिप डी। थॉम्पसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.