如何获取Mac上已被Finder用颜色标记的文件列表?

问题描述 投票:0回答:3

我想使用 Finder 在 Mac 上的某些文件添加特定颜色标签,然后能够使用 Python 或 bash 脚本获取该文件列表。是否可以通过命令行或Python脚本获取与文件关联的标签列表?

python macos tags finder
3个回答
3
投票

这是可能的。

但是你必须依赖 xattrxattr-lib 应该可以解决问题。
已经给出了一些关于如何使用

xattr
命令行工具的示例,可以在这里找到:

希望这些对你有帮助。
在更糟糕的情况下,您可以使用名为 tag 的工具:

tag -l file # list
tag -a tag1 file # add
tag -s red,blue file # set
tag -r \* file # remove all tags
tag -f green # find all files with the green tag
tag -f \* # find all files with tags
tag -m red * # match (print files in * that have the red tag)

这与subprocess.Popen结合可以解决您的需求。


0
投票

迟到了,但这也是一直困扰我的事情 - 我最终为技术害羞的人想出了一个运行回合,不需要行命令编码,只需要普通的 Finder 命令和 SimpleText。尝试以下操作:

  1. 打开包含标记文件的 Finder 窗口并选择全部

  2. 右键单击所选文件以获取上下文菜单,然后选择“复制 [x 个] 文件”。如果它没有说“复制 [x 个] 文件”而只是“复制 [文件名]”,则您不小心取消选择了这些文件;重新选择所有文件,然后再次尝试右键单击。

  3. 打开简单文本。确保将其设置为使用纯文本而不是富文本。 (菜单栏:格式>制作纯文本/富文本)。如果将其设置为富文本,则此技术将不起作用:您将获得包含实际文件的文档,而不是其名称列表!

  4. 粘贴。这将粘贴所有选定文件的“文件名”列表,每行一个,按照它们在 Finder 中出现的顺序排列。万岁!

  5. 希望这对您有用。它改变了我的生活。


0
投票

enter image description here 您可以使用 Bash 或 zsh 中的

mdfind

来查找感兴趣的文件: % mdfind 'kMDItemUserTags == "red"c' -onlyin ~/Desktop/td /Users/andrew/Desktop/td/file2 /Users/andrew/Desktop/td/file5 % mdfind 'kMDItemUserTags == "orange"c' -onlyin ~/Desktop/td /Users/andrew/Desktop/td/file4 /Users/andrew/Desktop/td/file5

(字符串 
c

之后的

"orange"
设置忽略大小写选项。否则您需要
'kMDItemUserTags == "Orange"'
您可以在 shell 循环中使用它,并且支持通配符:

while read -r fn; do echo "$fn" $(mdls -name kMDItemUserTags "$fn") done < <(mdfind 'kMDItemUserTags == "*"' -onlyin ~/Desktop/td)

这使用 
mdls

来获取每个文件的详细信息。 打印:

/Users/andrew/Desktop/td/file5 kMDItemUserTags = ( Red, Orange ) /Users/andrew/Desktop/td/file4 kMDItemUserTags = ( Orange ) /Users/andrew/Desktop/td/file2 kMDItemUserTags = ( Red )

因此任何支持系统调用的脚本语言也将允许获取 Finder 标签。

特别是使用 Python,您甚至有

更好的选择。

© www.soinside.com 2019 - 2024. All rights reserved.