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


2
参照してくださいgithub.com/jdberry/tag
mankoff

1
tagジェームズベリーの推薦を2番目にしましたhttps://github.com/jdberry。を介してインストールbrew install tag、タグを追加、タグをtag -a <tag> <file>検索できますtag -f <tag1, tag2>。とても便利です。私はいつも使っています。
クリスコノヴァー14

はい、間違いなくtagコマンドを取得します。brew経由で非常に簡単にインストールできます。
ジェイコブ

回答:


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検索を制限するも参照してください。

これらのブール式がどれほど複雑になるかはチェックしませんでしたが、これら2つの例は機能します。

次の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」タグ(Mavericksにアップグレードする前のオレンジラベル)を含むディレクトリに295個のファイルがあります。そのコマンドはそれらの11のみをリストします。また、「Green」とタグ付けされた多くのファイルがあります---そのコマンドはどれも見つけません。
markvgti

1
@wjv私はあなたが提案した構文を使用し、上にリストしたものとまったく同じ結果を得ました。
markvgti

1
@markvgti次に、このコマンドで見つかった1つのOrangeファイルとそうでない1つのOrangeファイルを取得し、xattrまたはmdlsとの違いを見つけますか?
アレシール

4

ファイルのすべてのタグを取得するには:

mdls -name kMDItemUserTags filename


これは、尋ねられた内容の逆のようです。コマンドは、1つのファイルのすべてのタグをダンプします。OPは、1つのタグを持つすべてのファイルを知りたいと思います。
bmike

2
それでも、便利です。これは、Googleで検索してここにたどり着いたときの質問に答えます。これをカバーする別のQ / Aがない場合は、自分で1つ投稿して回答する価値があるかもしれません。
スリップD.トンプソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.