Как я могу рекурсивно применять теги в Mavericks?

Теперь, когда Mavericks удалили эту уродливую цветную полосу и заменили ее красивой точкой, я хотел бы больше использовать теги.

В основном у меня есть рабочие файлы в разных местах, которые связаны с разными проектами, и я хотел бы применить тег ко всем файлам, включенным в определенные папки. Файлы могут перемещаться в новые папки (вне исходной папки) в будущем, поэтому я хотел бы рекурсивно применить тег к папке, чтобы мне было легче, если он будет перемещен из своей папки.

Ответы (4)

Вы можете использовать xattr для записи различных метаданных, связанных с «новыми» тегами в Mavericks. Джон Сиракуза уже сделал тяжелую работу здесь .

По сути, вам нужно записать в файлы два атрибута, com.apple.FinderInfo и com.apple.metadata:_kMDItemUserTags. Самый простой способ — пометить файл так, как вы хотите, и просто скопировать из него атрибуты. Откройте терминал и перейдите в каталог, содержащий папку, которую вы хотите рекурсивно пометить. Затем введите:

touch sampleFile
open .

Это откроет Finder, чтобы вы могли пометить sampleFile так , как вы хотите, чтобы все остальные файлы были помечены. После того, как вы закончите пометку, вернитесь в окно терминала и введите:

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`"

Это рекурсивно развернет и пометит все файлы в yourDirName , а также файлы в любых подкаталогах. Вы можете оставить аргумент -type f отключенным, если хотите пометить не только файлы, но и подкаталоги.

Наконец, вы можете изменить

find yourDirName -type f

команды

find yourDirName -iname "*.ext"

если вы хотите пометить только определенные типы/расширения файлов.

Любить это. Я читал тот же обзор Ars, и мне было интересно, как я могу прикрепить необходимые метаданные к каждому файлу.

Через Macports/Homebrew доступен инструмент тегов CLI: https://github.com/jdberry/tag .

Однако, похоже, что у него нет опции рекурсии, я полагаю, что вы могли бы использовать это в сочетании со стандартным поиском UNIX.

например, (изнутри каталога, в который вы хотите пометить файлы)

find . -exec tag --add tagname {} \;  -print 
Текущая версия (тег v0.8.1) поддерживает рекурсивное тегирование с использованиемtag -e -d --add tagname path

Один из простых способов сделать это — использовать поиск Spotlight для создания списка всех интересующих вас файлов. Пример того, как это сделать:

  • В Finder перейдите к началу интересующей вас структуры папок.
  • Введите -kind:folderв поле поиска Spotlight

    Это будет искать все файлы, которые не являются папкой ( -знак сводит на нет результаты).

  • Затем убедитесь, что вы ограничили поиск интересующей вас иерархией папок, щелкнув имя папки в условиях поиска сразу под полем поиска Spotlight.

Теперь у вас будет список в окне Finder всех файлов в этой иерархии папок. Теперь достаточно просто выбрать все файлы и применить нужные теги обычным способом с помощью Finder.

Используйте различные поисковые запросы Spotlight в соответствии с вашими потребностями.

Вы можете немного упростить этот процесс, заставив Spotlight всегда искать в текущей папке, а не This Mac:

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

Перейдите в верхнюю папку и найдите «.» внутри этой папки.

Выберите все файлы и пометьте их.

Возможно, вам придется удалить тег, а затем повторно применить его.