2017-08-26 120 views
0

目標是找到處於某個州或國家的所有圖像。化合物mdfind搜索

mdfind kind:image 

會發現所有圖像

mdfind "kMDItemCountry == 'United States'" 

會發現什麼具有這種性質的所有文件。

mdfind kind:image "kMDItemCountry == 'United States'" 

失敗。我試過使用& &和()的各種分組,但不能使它工作。我怎樣才能成功地結合'kind:image'和像kMDIxxx這樣的屬性搜索?

+0

由於颶風,我已經離線了幾天。我找到了一個可行的答案,但沒有使用「kind:image」 mdfind -onlyin〜「(kMDItemContentTypeTree =='* image')&&(kMDItemCountry =='* Georgia *')」 – user1625344

回答

1

我有機會做一些實驗,以確定mdfind是如何運作的,而不是如何記錄 - 兩者不同。

首先,讓我們來看看在我的Mac上掛着的名爲tardis.png的文件的Spotlight數據。

mdls tardis.png 

輸出

_kMDItemOwnerUserID   = 501 
kMDItemBitsPerSample   = 32 
kMDItemColorSpace    = "RGB" 
kMDItemContentCreationDate  = 2017-05-31 14:15:03 +0000 
kMDItemContentModificationDate = 2017-05-31 14:15:03 +0000 
kMDItemContentType    = "public.png" 
kMDItemContentTypeTree   = (
    "public.png", 
    "public.item", 
    "public.png", 
    "public.data", 
    "public.image", 
    "public.content" 
) 
kMDItemCreator     = "Adobe Photoshop CC 2017 (Macintosh)" 
kMDItemDateAdded    = 2017-05-31 14:15:23 +0000 
kMDItemDisplayName    = "tardis.png" 
kMDItemFSContentChangeDate  = 2017-05-31 14:15:23 +0000 
kMDItemFSCreationDate   = 2017-05-31 14:15:22 +0000 
kMDItemFSCreatorCode   = "8BIM" 
kMDItemFSFinderFlags   = 0 
kMDItemFSHasCustomIcon   = (null) 
kMDItemFSInvisible    = 0 
kMDItemFSIsExtensionHidden  = 0 
kMDItemFSIsStationery   = (null) 
kMDItemFSLabel     = 0 
kMDItemFSName     = "tardis.png" 
kMDItemFSNodeCount    = (null) 
kMDItemFSOwnerGroupID   = 20 
kMDItemFSOwnerUserID   = 501 
kMDItemFSSize     = 1488497 
kMDItemFSTypeCode    = "PNGf" 
kMDItemHasAlphaChannel   = 0 
kMDItemKind     = "Portable Network Graphics image" 
kMDItemLogicalSize    = 1488497 
kMDItemOrientation    = 1 
kMDItemPhysicalSize   = 1490944 
kMDItemPixelCount    = 2091600 
kMDItemPixelHeight    = 1494 
kMDItemPixelWidth    = 1400 
kMDItemProfileName    = "sRGB IEC61966-2.1" 
kMDItemResolutionHeightDPI  = 72 
kMDItemResolutionWidthDPI  = 72 

這裏是匹配並列出一個查詢文件:

mdfind -onlyin . "(kMDItemPixelHeight>1500 || kMDItemPixelWidth=1400)&& kMDItemKind='*image*' && kMDItemProfileName='srgb*'c" 

,顯示瞭如何做複合搜索與&&(AND)和|| (OR),如何將括號內的條件分組(conditionA || conditionB)以及如何進行不區分大小寫的搜索(通過在搜索字符串後追加c)。


例子

mdfind -0 kind:image | xargs -0 mdls -n kMDItemAcquisitionModel | sort -u 
kMDItemAcquisitionModel = "645 PRO Mk III for iOS" 
kMDItemAcquisitionModel = "BlackBerry 8900" 
kMDItemAcquisitionModel = "BlackBerry 9000" 
kMDItemAcquisitionModel = "Canon EOS 5D Mark III" 
kMDItemAcquisitionModel = "Canon EOS 5D" 
kMDItemAcquisitionModel = "Canon EOS 7D Mark II" 
kMDItemAcquisitionModel = "Canon EOS 7D" 
kMDItemAcquisitionModel = "Canon EOS-1D Mark II N" 
kMDItemAcquisitionModel = "Canon EOS-1D Mark IV" 
kMDItemAcquisitionModel = "Canon EOS-1D X" 
kMDItemAcquisitionModel = "Canon EOS-1DS" 
kMDItemAcquisitionModel = "Canon EOS-1Ds Mark II" 
kMDItemAcquisitionModel = "Canon EOS-1Ds Mark III" 
kMDItemAcquisitionModel = "EOS-1Ds Mark III" 
kMDItemAcquisitionModel = "EPSON Perfection 4990" 
kMDItemAcquisitionModel = "NIKON D800" 
kMDItemAcquisitionModel = "NIKON D800E" 
kMDItemAcquisitionModel = "Perfection 4990" 
kMDItemAcquisitionModel = "Perfection4990" 
kMDItemAcquisitionModel = "PerfectionV700 " 
kMDItemAcquisitionModel = "PerfectionV700" 
kMDItemAcquisitionModel = "TANGO   " 
kMDItemAcquisitionModel = "TANGO" 
kMDItemAcquisitionModel = "iPad mini 4" 
kMDItemAcquisitionModel = "iPad mini" 
kMDItemAcquisitionModel = "iPad" 
kMDItemAcquisitionModel = "iPhone 3G" 
kMDItemAcquisitionModel = "iPhone 3GS" 
kMDItemAcquisitionModel = "iPhone 4" 
kMDItemAcquisitionModel = "iPhone 4S" 
kMDItemAcquisitionModel = "iPhone 5" 
kMDItemAcquisitionModel = "iPhone 5s" 
kMDItemAcquisitionModel = "iPhone 6" 
kMDItemAcquisitionModel = "iPhone 6s" 
kMDItemAcquisitionModel = "iPhone SE" 
kMDItemAcquisitionModel = "iPhone" 

找到所有的照片:也許更多我自己參考;-)

名單,我用來做我的Mac上的圖片全部相機和掃描儀在iPhone 6上拍攝:

mdfind "kMDItemAcquisitionModel='*iPhone*6*'" 

注意

  • 該名男子頁說:-onlyin限制搜索到指定目錄的範圍。這是不正確的,因爲它也遞歸到包含的目錄中。

  • 無論您使用單個(=)還是雙倍(==)等於比較符號,似乎都沒有區別。

  • 該文檔說,您可以使用string==[c]"pattern"進行不區分大小寫的搜索,這是不正確的,並且上面顯示的語法在macOS Sierra至少可以使用。

+0

請再看一下,我已經更新了我的答案。 –