Mac OS - Suche nach TAGS (bestimmte Anzahl)

So könntest Du es machen. Ich habe zum Testen einige Dateien in einem Ordner mit verschiedenen Tags versehen


Die Taginformationen sind in kMDItemUserTags gespeichert.

Wenn Du Dir mit mdls die Tags im Terminal ansiehst findest Du dort in der langen Liste alle Attribute auch die gesuchten.
> mdls macfix\ 3\ Tags.png
Show Plain Text
  1. kMDItemUserTags                     = (
  2.     Red,
  3.     Yellow,
  4.     Blue
  5. )

Um nur dieses Attribut zu sehen, kannst Du die Ausgabe von mdls mit -name darauf einschränken:
Show Plain Text
  1. mdls -name kMDItemUserTags -raw macfix\ 3\ Tags.png
  2. (
  3.     Red,
  4.     Yellow,
  5.     Blue
  6. )


Ein kleiner Test zeigt, daß durch die Klammern vor/nach den einzelnen Tags, die Ausgabe immer zwei Zeilen mehr hat, als Tags vergeben sind:
Show Plain Text
  1. for i in * ; do mdls -name kMDItemUserTags "$i" | echo "$(wc -l) $i" ; done
  2.        1 macfix 0 Tags.png
  3.        3 macfix 1 Tag.png
  4.        4 macfix 2 Tags A.png
  5.        4 macfix 2 Tags B.png
  6.        5 macfix 3 Tags A.png
  7.        5 macfix 3 Tags B.png
  8.        5 macfix 3 Tags C.png

Eine Ausnahme gibt es bei 0 Tags da dort nur (null) ausgegeben wird.

Wenn Du Dich in dem Verzeichnis mit den ganzen Dateien befindest, erhältst Du mit
Show Plain Text
  1. for i in * ; do if [[ $(mdls -name kMDItemUserTags "$i" | wc -l) -eq 5 ]]; then echo "$i" ; fi ; done


die gewünschte Ausgabe. Nur Dateien mit genau 3 Tags werden ausgegeben, da auf ist gleich 5 (3 Tags + 2 Zeilen für die Klammern) verglichen wird.
Show Plain Text
  1. macfix 3 Tags A.png
  2. macfix 3 Tags B.png
  3. macfix 3 Tags C.png


An der Stelle nach dem then kannst Du mit der gefundenen Datei weiterarbeiten, der Dateiname befindet sich in $i. Du kannst sie kopieren, umbenennen oder was Du eben machen möchtest.