แท็ก 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(หรืออะไรทำนองนั้น) เพื่อแสดงไฟล์ทั้งหมดที่ติดแท็กเป็น "คณิตศาสตร์" หรือไม่?

แก้ไข: ฉันทำเครื่องมือที่เรียกtfindว่าทำสิ่งนี้: https://github.com/tlehman/bin/blob/master/tfind



1
ผมสองข้อเสนอแนะสำหรับการโดยเจมส์แบล็กเบอร์ที่tag https://github.com/jdberryคุณสามารถติดตั้งผ่านทางbrew install tagเพิ่มแท็กผ่านการค้นหาแท็กผ่านทางtag -a <tag> <file> tag -f <tag1, tag2>มีประโยชน์มากฉันใช้มันตลอดเวลา
Chris Conover

ใช่tagรับคำสั่งแน่นอน ติดตั้งผ่านทางชงง่ายมาก
จาค็อบ

คำตอบ:


11

ฉันสมมติว่าพวกเขาจะเป็นxattrเหมือนพวกเขาอยู่ใน 10.8.3 (และเก่ากว่า)

ในขณะนี้คุณสามารถดูได้ว่าไฟล์เสริมมีคุณสมบัติls -l@ใด

xattrแต่การที่จะดูเนื้อหาของคุณลักษณะที่คุณต้องใช้


คุณพูดถูกแท็กจะถูกเก็บเป็น xattr
tlehman

FYI: ด้วย OS X El Capitan ฉันใช้คำสั่ง, xattr -pl com.apple.metadata:_kMDItemUserTags filename. อย่างไรก็ตามมันไม่ได้เป็นมิตรมากเอาท์พุท
LS

13

mdfindใช่คุณสามารถหาไฟล์ที่มีแท็กผู้ใช้ที่ได้รับใช้

สร้างไฟล์และกำหนดเป็นแท็กที่กำหนดเองใน Finder

จากนั้นไปที่สถานีปลายทาง คุณจะพบกับ:

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.

ซึ่งสามารถใช้ได้จริงกับชื่อไฟล์ที่น่ารังเกียจ


ปัญหาของวิธีนี้คือไม่พบไฟล์ทั้งหมดส่งคืนไฟล์ย่อยชุดเดียว (อาจว่างเปล่า)
markvgti

3
มันจะปรากฏขึ้นที่พวกเขาได้แนะนำง่ายmdfindไวยากรณ์สำหรับแท็กเช่น: mdfind "tag:Math",mdfind "tag:Math OR tag:Programming"
wjv

1
@AntoineLecaille ฉันมีไฟล์ 295 ไฟล์ในไดเรกทอรีที่มีแท็ก "Orange" (ฉลากสีส้มก่อนที่จะอัพเกรดเป็น Mavericks) คำสั่งนั้นแสดงรายการเพียง 11 รายการเท่านั้น มีไฟล์จำนวนมากที่ติดแท็ก "สีเขียว" --- คำสั่งนั้นไม่พบไฟล์เหล่านั้น
markvgti

1
@wjv ฉันใช้ไวยากรณ์ที่คุณแนะนำและได้ผลลัพธ์เหมือนกับที่ฉันได้ระบุไว้ข้างต้น
markvgti

1
@markvgti จากนั้นนำไฟล์ส้มหนึ่งไฟล์ที่พบด้วยคำสั่งนี้และไฟล์ที่ไม่ใช่และค้นหาความแตกต่างด้วย xattr หรือ mdls?
alecail

4

คุณสามารถรับแท็กทั้งหมดของไฟล์ด้วย:

mdls -name kMDItemUserTags filename


นี่น่าจะเป็นสิ่งที่ตรงกันข้ามกับสิ่งที่ถูกถาม คำสั่งของคุณจะทิ้งแท็กทั้งหมดสำหรับหนึ่งไฟล์ ฉันคิดว่า OP ต้องการทราบไฟล์ทั้งหมดด้วยแท็กเดียว
bmike

2
ยังมีประโยชน์ มันตอบคำถามที่ฉันมีเมื่อฉัน Googled และจบลงที่นี่ หากไม่มี Q / A อื่นที่ครอบคลุมสิ่งนี้อาจเป็นความพยายามที่จะโพสต์และตอบคำถามด้วยตัวคุณเอง
Slipp D. Thompson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.