2012-10-03 21 views
2

看這個mdfind查詢:mdfind查詢怪異的行爲

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

有什麼錯呢?也許邏輯OR - ||這是蘋果沒有記錄在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/[email protected]* 

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

是不是有什麼毛病我mdfind查詢,或者是有什麼毛病Spotlight database

當然,一個可能性:另外還有一個與10.7.510.8.2更新推出的Spotlight嚴重的錯誤(檢查https://discussions.apple.com/message/19863234#19863234

感謝:-)

+0

我昨天不能重現它,但現在它在應用程序之後列出了大約300000個文件。 (我在10.8.2。) – user495470

+0

至少有一個10.7.5 Spotlight問題已修復 - http://support.apple.com/kb/DL1599 – studgeek

+0

據我所知,這是一個錯誤。發生在10.7.5和10.8.2,完全更新,但不會發生在10.6.8。 –

回答

1

我不知道是怎麼回事。 Spotlight在kMDItemFS *上搜索或者搜索失敗?

我手在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

+0

+1對FS項目的性能成本。您也可以使用kMDItemDisplayName作爲文件名。請參閱https://developer.apple.com/library/mac/#documentation/Carbon/Reference/MDItemRef/Reference/reference.html – studgeek

+0

是的,您可以使用kMDItemDisplayName,但它可能與文件名完全不同。 Pages.app的顯示名稱爲Pages,並且「.... Library/Mail /../ 248747.emlx的顯示名稱爲」Re:Purchase「 –

+0

您可以評論哪裏?名稱不存儲在Spotlight數據庫中「是否記錄在案? – SG1