【问题标题】:mdfind query weird behaviourmdfind 查询奇怪的行为
【发布时间】:2012-09-24 18:21:33
【问题描述】:

看看这个 mdfind 查询:

mdfind 'kMDItemFSName = "Pages.app" || kMDItemFSName = "Keynote.app" || kMDItemFSName = "Numbers.app"'  

有什么问题吗?也许是合乎逻辑的OR - ||,Apple 在mdfind 手册页上没有记录?

在 99% 的情况下,mdfind 返回每​​个 iwork 应用程序的三个文件路径/位置(或者在未安装时不返回任何内容)。

/Applications/iWork '09/Pages.app   
/Applications/iWork '09/Keynote.app  
/Applications/iWork '09/Numbers.app

但在 ~1-5% (10.8.2) 中,我从 mdfind 得到这个:

/Applications/iWork '09/Keynote.app  
/Applications/Mail.app  
/Applications/Messages.app  
/Applications/Utilities/Migration Assistant.app  
/Applications/Notes.app  
...  
/Library/Scripts/Printing Scripts/Convert To PDF.scpt  
/Library/Scripts/Printing Scripts/Convert To PostScript.scpt  
/Library/Scripts/Printing Scripts/Print Window With Subfolders.scpt  
/Library/Scripts/Printing Scripts/Print Window.scpt  
...  
/System/Library/Frameworks/GameKit.framework/Versions/A/Resources/GKNavbarBackButtonNormalLandscape.png  
/System/Library/Frameworks/GameKit.framework/Versions/A/Resources/GKNavbarBackButtonNormalLandscape@2x.png*  

------------ List goes on (tons of stuff) ------------  

我的mdfind 查询是否有问题,或者Spotlight database 是否有问题?

当然有可能:10.7.510.8.2 更新引入的 Spotlight 中存在严重错误(检查 https://discussions.apple.com/message/19863234#19863234

谢谢:-)

【问题讨论】:

  • 昨天我无法重现,但现在它在应用程序之后列出了大约300000个文件。 (我在 10.8.2。)
  • 至少有一个 10.7.5 Spotlight 问题已得到修复 - support.apple.com/kb/DL1599
  • 据我所知,这是一个错误。发生在 10.7.5 和 10.8.2,完全更新,但不会发生在 10.6.8。

标签: macos shell osx-lion osx-mountain-lion spotlight


【解决方案1】:

我不知道这里发生了什么。似乎 Spotlight 无法在 kMDItemFS* 上进行 OR 搜索?

我在 Finder 中手动创建了一个基于 OR 的 Spotlight 搜索 - 它失败了。

我下载了 HoudahSpot 并做了一个简单的“文件名”是 Pages.app 或文件名是 Keynote.app 查询并得到了相同的结果 - 超过 50,000

所以它看起来不仅仅是 mdfind 对查询的解释中的一个错误。

作为进一步的线索: 名称中带有 FS 的任何项目(例如 kMDItemFSName)都不会存储在 Spotlight 数据库中,因此查询需要更长的时间。

 mdfind "kMDItemCFBundleIdentifier == 'com.apple.iWork.Pages'  || kMDItemCFBundleIdentifier == 'com.apple.iWork.Keynote'"

在我的计算机上运行速度提高了大约 1000 倍。

在这个 5 年左右的指南中,他们提到使用单个 |对于 OR,但这在 10.8.2 上对我不起作用 http://macdevcenter.com/pub/a/mac/2006/01/04/mdfind.html

【讨论】:

  • +1 FS 项目的性能成本。您也可以使用 kMDItemDisplayName 作为文件名。见developer.apple.com/library/mac/#documentation/Carbon/Reference/…
  • 是的,您可以使用 kMDItemDisplayName,但它可以与文件名完全不同。 Pages.app 的显示名称为 Pages,“....Library/Mail/.../248747.emlx 的显示名称为“Re: Purchase”
  • 您能否评论“名称中带有 FS 的任何项目未存储在 Spotlight 数据库中”的记录?
猜你喜欢
  • 2016-02-24
  • 2010-11-26
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多