標籤:android blog http color 使用 os
用grep來搜代碼和方便,最原生態了,常用的:
? ~ grep ‘NuPlayer‘ -iInr --color ./aosp
其中`i`表示大小寫忽略;`I`表示忽略binary檔案;`n`顯示搜尋結果的行號;`r`表示遞迴搜尋子目錄
不過grep搜尋有點慢,網上也很多通過建立索引加快搜尋速度的方法:“other grep-like tools and indexing tools”
一向使用者體驗著稱的Mac指定不會缺少這個,`Spotlight`就是系統內建的基於索引搜尋工具,使用起來也很簡單,ctrl+space呼出。如果想調到搜尋結果檔案所在的目錄,就按住Command鍵滑鼠進入.
`Spotlight`當然有自訂更強的命令列版:`mdfind`。如上面搜尋命令可以這麼玩:
? ~ mdfind ‘NuPlayer‘ -onlyin ./aosp | xargs grep ‘NuPlayer‘ -iInr --onlyin ./aosp
這樣的速度在搜尋像android代碼裡會快好幾十倍。其中`-onlyin`告訴命令僅僅在這個目錄裡找,要不然會在整個硬碟上搜(不過也很快).不妨做個函數放在`bash_profile`裡:
function fastfind {mdfind [email protected] -onlyin . | xargs grep [email protected] -riIn .;}
由於索引的限制,`mdfind`搜尋對象不支援Regex,不過這幾個應該夠用:
mdfind ‘‘str1 str2" 表示str1和str2同時出現
mdfind "str1|str2" 表示str1和str2出現一個
mdfind "str1-str2 表示出現str1但不出現str2
`mdfind`更進階的用法,參考spotlight的metadata定義,參考spotlight。
spotlight定義的metadata不太好理解,不過敲一敲這個命令`mdls`就能知道個大概:
? ~T mdls ~/Movies/Practise.mp4kMDItemAudioBitRate = 48kMDItemAudioChannelCount = 2kMDItemCodecs = ( "H.264", AAC)kMDItemContentCreationDate = 2012-01-05 21:59:18 +0000kMDItemContentModificationDate = 2012-01-05 21:59:18 +0000kMDItemContentType = "public.mpeg-4"kMDItemContentTypeTree = ( "public.mpeg-4", "public.movie", "public.audiovisual-content", "public.data", "public.item", "public.content").....kMDItemFSName = "Practise.mp4"......? ~T mdfind ‘kMDItemCodecs=H.264‘ | grep ‘Practise‘/Users/hong/Movies/Practise.mp4
spotlight裡正是通過這些‘kMDItem‘開頭的metadata來做索引的
命令列控可以再看看這個:“用命令列使用spotlight”