码迷,mamicode.com
首页 > 其他好文 > 详细

在Mac OS X上利用Spotlight搜索代码

时间:2014-07-20 23:30:42      阅读:446      评论:0      收藏:0      [点我收藏+]

标签: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 $@ -onlyin . | xargs grep $@ -riIn .;}


由于索引的限制,`mdfind`搜索对象不支持正则表达式,不过这几个应该够用:

  • 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.mp4
kMDItemAudioBitRate            = 48
kMDItemAudioChannelCount       = 2
kMDItemCodecs                  = (
    "H.264",
    AAC
)
kMDItemContentCreationDate     = 2012-01-05 21:59:18 +0000
kMDItemContentModificationDate = 2012-01-05 21:59:18 +0000
kMDItemContentType             = "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

在Mac OS X上利用Spotlight搜索代码,布布扣,bubuko.com

在Mac OS X上利用Spotlight搜索代码

标签:android   blog   http   color   使用   os   

原文地址:http://my.oschina.net/caohong/blog/293082

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!