Macos 如何让mdfind在文件之外包含文件夹匹配项?
在终端中,我使用Macos 如何让mdfind在文件之外包含文件夹匹配项?,macos,bash,terminal,Macos,Bash,Terminal,在终端中,我使用mdfind'kMDItemFSLabel=6'查找Mac上带有红色文件标签的所有内容。但是,它似乎排除了带有红色标签的文件夹。我试图让它也返回文件夹,但我甚至无法让这些文件夹查询工作,更不用说将其添加到当前文件结果mdfind kind:folders和mdfind'kMDItemFSLabel=6'独立工作,但我不知道如何同时获得这两个文件夹: mdfind kind:folders AND 'kMDItemFSLabel == 6' mdfind 'kind:folders
mdfind'kMDItemFSLabel=6'
查找Mac上带有红色文件标签的所有内容。但是,它似乎排除了带有红色标签的文件夹。我试图让它也返回文件夹,但我甚至无法让这些文件夹查询工作,更不用说将其添加到当前文件结果mdfind kind:folders
和mdfind'kMDItemFSLabel=6'
独立工作,但我不知道如何同时获得这两个文件夹:
mdfind kind:folders AND 'kMDItemFSLabel == 6'
mdfind 'kind:folders' AND 'kMDItemFSLabel == 6'
mdfind 'kind:folders kMDItemFSLabel == 6'
mdfind kind:folders kMDItemFSLabel == 6
etc
我得到的结果是未能为[query over]
正确的语法是什么
一旦我做到了,我怎么说“文件夹和所有文件”?类似“种类:文件夹+全部”的东西
编辑:也尝试了:
mdfind kind:folders && 'kMDItemFSLabel == 6' returns every folder on my computer
mdfind kind:folders && kMDItemFSLabel == 6 returns every folder on my computer
mdfind 'kind:folders' && 'kMDItemFSLabel == 6' returns every folder on my computer
mdfind 'kind:folders && kMDItemFSLabel == 6' failed to create query
以下似乎有效:
mdfind 'kMDItemContentType = "public.folder" && kMDItemUserTags = "Red"cd'
顺便说一句,
末尾的cd
“红色”
意味着比赛应该忽略大小写(大写和小写)和变音标记(重音等)。tl;dr
使用以下独立于区域设置的命令:
- 文件和文件夹:
mdfind'kMDItemUserTags==Red'
- 仅限文件:
mdfind'kMDItemUserTags==红色&&!kMDItemContentType==公用文件夹“
- 仅文件夹:
mdfind'kMDItemUserTags==Red&&kMDItemContentType==public.folder'
- 文件和文件夹:
mdfind“标签:红色”
- 仅限文件:
mdfind“标签:红色而非种类:文件夹”
- 仅文件夹:
mdfind'tag:red AND kind:folder'
更新:事实证明,聚光灯-因此
mdfind
-使用两种不同的语言:
- SL-简单语言:一种基于
-
- 警告:将
和c
选项解释为需要作为d
和[c]
附加到运算符,而不是(右侧)操作数,这是OSX在保存交互式构造的查询时所做的操作;另外,至少还有一些选项出口没有提到:[d]
;如果在带引号的字符串中附加一个或多个选项字母,其含义如下w
。。。不敏感地匹配案例c
。。。匹配时忽略变音符号(外来字符基字母上方和下方的标记)d
。。。匹配作为一个完整的词(从我能告诉)w
- 您还可以使用熟悉的
(任意字符序列)和*
(一个字符)通配符?
- 警告:将
-
- 注意,由于Spotlight可以通过插件进行扩展,任何给定的机器都可能具有附加属性;要查看文件类型到属性的映射,请运行
并查看mdimport-X
键的条目Types
- 注意,由于Spotlight可以通过插件进行扩展,任何给定的机器都可能具有附加属性;要查看文件类型到属性的映射,请运行
-
总而言之,从OSX 10.10.3开始,
mdfind
和Spotlight查询语言都没有很好的文档记录,挑剔的野兽——试错往往是你最好的朋友,很遗憾。如果你在一个你希望匹配的文件夹上使用mdls
,它会显示标签吗?Spotlight GUI会找到文件夹吗?如果是,请尝试保存搜索,然后在“获取信息”窗口中检查查询或在文本编辑器中检查文件XML。所有出现在引号之外的&&
命令都不是您所想的。shell对&&
的解释就好像您输入了两个单独的命令,第二个命令只有在第一个命令成功时才执行。我怀疑这就是原因。通常,前导下划线表示“苹果专用”。请注意,…FinderLabel
与…FSLabel
不同。我做了一个测试,当我搜索一个标签(现在称为“标签”)并保存它时,查询是kMDItemUserTags=“Purple”cd
mdls
将kMDItemUserTags
列为一个数组,这很有意义,因为您可以对项目应用多个标记。所以,我想你应该搜索它。啊,你是对的,我没有注意到它是一个不同的属性名。看起来kMDItemFinderLabel和kMDItemUserTags都给出了相同的结果,但kMDItemUserTags可能是更好的选择,因为苹果已经转向标签而不是标签。就我所知,如果我想将其限制为文件夹(或仅限于文件),那么将其与“种类:文件夹”结合起来的正确方法是什么?我仍然无法使上述组合起作用。谢谢
mdfind 'kMDItemUserTags == Red'
mdfind 'tag:red' # in German, `tag:red` would be `attribut:red`
mdfind 'kMDItemUserTags == Red && ! kMDItemContentType == public.folder'
mdfind 'tag:red AND NOT kind:folder' # in German, `kind:folder` would be `art:ordner`
mdfind 'kMDItemUserTags == Red && kMDItemContentType == public.folder'
mdfind 'tag:red AND kind:folder'