Angenommen, ich habe eine Verzeichnisstruktur wie z
/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]
Gibt es von der Befehlszeile aus eine Möglichkeit ls
(oder etwas Ähnliches), alle Dateien anzuzeigen, die als "Math" gekennzeichnet sind?
BEARBEITEN: Ich habe ein Tool namens erstellt tfind
, das dies tut: https://github.com/tlehman/bin/blob/master/tfind
Ich gehe davon aus, dass sie ein xattr sein werden, wie sie es derzeit auf 10.8.3 (und älter) sind.
Derzeit können Sie anzeigen, welche erweiterten Attribute eine Datei mit ls -l@
.
Aber um den Inhalt der Attribute zu sehen, müssen Sie xattr
.
xattr -pl com.apple.metadata:_kMDItemUserTags filename
. Es war jedoch keine sehr freundliche Ausgabe.Ja, Sie können Dateien mit einem bestimmten Benutzer-Tag finden, indem Sie mdfind
.
Erstellen Sie eine Datei und weisen Sie ihr ein benutzerdefiniertes Tag im Finder zu.
Gehen Sie dann in ein Terminal; Sie finden es mit:
mdfind "kMDItemUserTags == Math || kMDItemUserTags == Programming"
oder
mdfind "kMDItemUserTags == Math && kMDItemUserTags == Programming"
Siehe auch -onlyin aFolder
Suche einschränken.
Ich habe nicht überprüft, wie komplex diese booleschen Ausdrücke sein können, aber diese beiden Beispiele funktionieren.
Sie können die Ausgabe ls
wie folgt weiterleiten:
mdfind "kMDItemUserTags == mathTag || kMDItemUserTags == anotherTag" \
| while read f; do ls "$f"; md5 "$f"; done
Außerdem hat mdfind eine Option "-0"
-0 Use NUL (``\0'') as a path separator, for use with xargs -0.
was bei fiesen Dateinamen praktisch sein kann.
mdfind
Syntax für Tags eingeführt, z. B.: mdfind "tag:Math"
,mdfind "tag:Math OR tag:Programming"
Sie können alle Tags einer Datei erhalten mit:
mdls -name kMDItemUserTags filename
mankoff
Chris Conover
tag
von James Berry anhttps://github.com/jdberry
. Sie können es über installierenbrew install tag
, ein Tag hinzufügen übertag -a <tag> <file>
und Tags finden übertag -f <tag1, tag2>
. Sehr, sehr praktisch, ich benutze es die ganze Zeit.Jay
tag
Befehl bekommen. Lässt sich sehr einfach über Brew installieren.