Wie kann ich Tags in Mavericks rekursiv anwenden?

9

Nachdem Mavericks diesen hässlichen farbigen Balken entfernt und durch einen gut aussehenden Punkt ersetzt hat, würde ich gerne mehr Tags verwenden.

Grundsätzlich habe ich Arbeitsdateien an verschiedenen Orten, die sich mit verschiedenen Projekten befassen, und ich möchte das Tag für alle Dateien anwenden, die in bestimmten Ordnern enthalten sind. Die Dateien werden möglicherweise in Zukunft in neue Ordner (außerhalb des ursprünglichen Ordners) verschoben, daher möchte ich ein Tag rekursiv auf einen Ordner anwenden, damit ich es leichter finden kann, wenn es aus seinem Ordner verschoben wird.

Steve W.
quelle

Antworten:

7

Mit xattr können Sie verschiedene Metadaten zu den "neuen" Tags in Mavericks schreiben. John Siracusa hat das schwere Heben schon hier gemacht .

Im Wesentlichen müssen Sie zwei Attribute, com.apple.FinderInfo und com.apple.metadata: _kMDItemUserTags, in die Dateien schreiben. Am einfachsten ist es, eine Datei mit einem Tag zu versehen, wie Sie möchten, und einfach die Attribute daraus zu kopieren. Öffnen Sie das Terminal und wechseln Sie in das Verzeichnis mit dem Ordner, den Sie rekursiv markieren möchten. Dann geben Sie ein:

touch sampleFile
open .

Dadurch wird der Finder geöffnet, sodass Sie die sampleFile so markieren können, wie alle anderen Dateien markiert werden sollen. Wechseln Sie nach dem Markieren zurück zu Ihrem Terminalfenster und geben Sie Folgendes ein:

find yourDirName -type f | xargs xattr -wx com.apple.FinderInfo \
"`xattr -px sampleFile`"

find yourDirName -type f | xargs xattr -wx com.apple.metadata:_kMDItemUserTags \
"`xattr -px com.apple.metadata:_kMDItemUserTags sampleFile`"

Dadurch werden alle Dateien in yourDirName sowie die Dateien in den Unterverzeichnissen rekursiv aufgeschlüsselt und mit Tags versehen . Sie können das Argument -type f weglassen, wenn Sie sowohl die Unterverzeichnisse als auch die Dateien kennzeichnen möchten.

Schließlich können Sie die ändern

find yourDirName -type f

Befehle an

find yourDirName -iname "*.ext"

Wenn Sie nur bestimmte Dateitypen / -erweiterungen markieren möchten.

Colin C.
quelle
Liebe es. Ich habe die gleiche Ars-Rezension gelesen und mich gefragt, wie ich die benötigten Metadaten an jede Datei anhängen kann.
Steve W.
10

Über Macports / Homebrew ist ein CLI-Tag-Tool verfügbar: https://github.com/jdberry/tag

Es scheint keine Rekursionsoption zu geben, aber ich würde mir vorstellen, dass Sie diese Option in Verbindung mit dem Standard-UNIX-Find verwenden können.

zB (aus dem Verzeichnis heraus, in dem Sie Dateien markieren möchten)

find . -exec tag --add tagname {} \;  -print 
Anh Q.
quelle
Die aktuelle Version (Tag v0.8.1) unterstützt rekursives Tagging mittag -e -d --add tagname path
Munkymorgy
3

Eine einfache Möglichkeit, dies zu tun, besteht darin, mithilfe einer Spotlight-Suche eine Liste aller Dateien zu erstellen, an denen Sie interessiert sind. Ein Beispiel dafür:

  • Navigieren Sie im Finder zum Anfang der Ordnerstruktur, an der Sie interessiert sind.
  • Geben Sie -kind:folderdas Spotlight-Suchfeld ein

    Dadurch wird nach allen Dateien gesucht, die kein Ordner sind (das -Zeichen negiert die Ergebnisse).

  • Stellen Sie sicher, dass Sie die Suche auf die Ordnerhierarchie beschränken, an der Sie interessiert sind, indem Sie in den Suchbegriffen direkt unter dem Spotlight-Suchfeld auf den Namen des Ordners klicken.

In Ihrem Finder-Fenster wird nun eine Liste aller Dateien in dieser Ordnerhierarchie angezeigt. Jetzt ist es trivial, alle Dateien auszuwählen und die gewünschten Tags wie gewohnt mit Finder anzuwenden.

Verwenden Sie verschiedene Spotlight-Suchvorgänge, um Ihren Anforderungen gerecht zu werden.

Sie können diesen Vorgang etwas vereinfachen, indem Spotlight immer im aktuellen Ordner sucht und nicht This Mac:

Finder -> Preferences -> Advanced -> When performing a search: Search the current folder

Alex D.
quelle
1

Gehen Sie zum obersten Ordner und suchen Sie nach '.' in diesem Ordner.

Wählen Sie alle Dateien aus und markieren Sie sie.

Möglicherweise müssen Sie das Tag entfernen und dann erneut anwenden.

DcTurner
quelle