mdfind查询奇怪的行为

时间:2012-10-03 18:56:36

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

看看这个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

谢谢:-)

1 个答案:

答案 0 :(得分:1)

我不知道这里发生了什么。似乎Spotlight在OR搜索kMDItemFS *时被破坏了?

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

我下载了HoudahSpot并制作了一个简单的'Filename'是Pages.app或Filename是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