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"Math"로 태그가 지정된 모든 파일을 표시하는 데 사용할 수있는 방법이 있습니까?

편집 : 나는 이것을하는 도구를 만들었다 tfind: https://github.com/tlehman/bin/blob/master/tfind



1
tag제임스 베리 (James Berry) 의 추천을 두 번째로 받았습니다 https://github.com/jdberry. 을 통해 설치 brew install tag하거나을 통해 태그를 추가하고을 통해 태그를 tag -a <tag> <file>찾을 수 tag -f <tag1, tag2>있습니다. 매우 편리합니다. 항상 사용합니다.
Chris Conover

예, 분명히 tag명령을 받으십시오. 추출을 통해 매우 쉽게 설치할 수 있습니다.
Jacob

답변:


11

나는 그들이 현재 10.8.3 (이상)에있는 것처럼 xattr 이 될 것이라고 가정 합니다.

현재 파일의 확장 된 속성을 볼 수 있습니다 ls -l@.

그러나 속성의 내용을 보려면을 사용해야 xattr합니다.


맞습니다. 태그는 xattr로 저장되었습니다
tlehman

참고 : 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 "Orange"태그 (매버릭스로 업그레이드하기 전에 주황색 레이블)가있는 디렉토리에 295 개의 파일이 있습니다. 이 명령은 11 개만 나열합니다. 또한 "Green"으로 태그 된 많은 파일이 있습니다. ---이 명령은 해당 파일을 찾지 못합니다.
markvgti

1
@ wjv 나는 당신이 제안한 구문을 사용했으며 위에 나열된 것과 정확히 동일한 결과를 얻었습니다.
markvgti

1
@markvgti 그런 다음이 명령으로 찾은 주황색 파일과 그렇지 않은 파일 하나를 가져 와서 xattr 또는 mdls와의 차이점을 찾으십시오.
alecail

4

다음을 사용하여 파일의 모든 태그를 얻을 수 있습니다.

mdls -name kMDItemUserTags filename


이것은 요청 된 것과 반대되는 것 같습니다. 명령은 하나의 파일에 대한 모든 태그를 덤프합니다. OP가 하나의 태그가있는 모든 파일을 알고 싶어한다고 생각합니다.
bmike

2
여전히 유용합니다. Google 검색을 할 때의 질문에 대한 답을 얻었으며 여기서 끝났습니다. 이를 다루는 다른 Q / A가 없다면 직접 게시하고 답변을 해보는 것이 좋습니다.
슬립 D. 톰슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.