V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pbjacob
V2EX  ›  macOS

在 spotlight 下如何同时利用文件夹名和文件名来搜索?

  •  
  •   pbjacob · 2015-06-12 14:25:31 +08:00 · 3081 次点击
    这是一个创建于 3481 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如,对于将要搜索的文件,我能提供如下线索:

    1. 它的文件名中包含AAA字样;
    2. 它所属的文件夹名或更高级文件夹名中包含BBB字样。

    也就是说,文件的path和filename同时参与搜索

    在windows下的everything软件里,可以这样操作:
    \BBB AAA

    想问的是,在OS X下,利用spotlight或alfred或mdfind或locate或Devonthink之类的软件及命令能否实现类似everything的功能?

    谢谢!
    19 条回复    2015-06-13 19:58:00 +08:00
    txl263
        1
    txl263  
       2015-06-12 15:51:41 +08:00
    locate BBB|grep AAA
    txl263
        2
    txl263  
       2015-06-12 15:57:11 +08:00
    Alfred里可以先输入BBB,焦点包含BBB的目标文件夹,→(方向键)然后输入AAA
    txl263
        3
    txl263  
       2015-06-12 16:00:08 +08:00
    spotlight的话,输入BBB找到目标文件夹,然后焦点倒是可以显示内容,但是不知道怎么搜索AAA。
    lululau
        4
    lululau  
       2015-06-12 16:03:11 +08:00
    `mdfind -name basename | fzf`
    txl263
        5
    txl263  
       2015-06-12 16:43:02 +08:00
    find PATH -ipath '*BBB*AAA*'
    pbjacob
        6
    pbjacob  
    OP
       2015-06-13 10:09:19 +08:00
    @lululau
    @txl263
    感谢两位朋友的回复。
    试了一下,在terminal里用mdfind BBB | grep -i AAA 就OK了。
    现在就是不知道有什么好办法可以让搜索结果列表能方便地显示出来,而不是干巴巴的终端上的文字。
    canautumn
        7
    canautumn  
       2015-06-13 10:12:17 +08:00
    @pbjacob 写一个alfred workflow
    txl263
        8
    txl263  
       2015-06-13 12:02:27 +08:00
    @pbjacob find PATH -ipath '*BBB*AAA*' 和Alfred应该比较好,mdfind的话找不到APP包里的文件。当然find不如mdfind效率高(因为已经有数据库了)。
    txl263
        9
    txl263  
       2015-06-13 12:03:39 +08:00
    @pbjacob
    结果你要怎么显示?
    可以加个>xxx.txt 结果输出到文件。
    pbjacob
        10
    pbjacob  
    OP
       2015-06-13 13:36:19 +08:00
    @txl263 我还是希望能根据显示的检索结果直接能预览文件或打开文件或打开路径,就像Alfred或Spotlight的File Navigation一样。我考虑写个workflow给alfred吧。
    txl263
        11
    txl263  
       2015-06-13 15:13:21 +08:00
    @pbjacob
    find PATH -ipath '*BBB*AAA*' -print0 | xargs open -a APPName
    比如在当前目录下寻找并且用预览打开
    find . -ipath '*BBB*AAA*' -print0 | xargs open -a Preview
    当然用mdfind也行
    mdfind BBB | grep -i AAA | xargs open -a APPName
    open命令的参数
    Options:
    -a Opens with the specified application.
    -b Opens with the specified application bundle identifier.
    -e Opens with TextEdit.
    -t Opens with default text editor.
    txl263
        12
    txl263  
       2015-06-13 15:14:37 +08:00
    -print0可以去掉
    txl263
        13
    txl263  
       2015-06-13 15:19:01 +08:00
    文件或者目录名有空格的时候不行
    txl263
        14
    txl263  
       2015-06-13 15:20:43 +08:00
    多个结果的话加-print0只打开第一个,否则就打开所有结果。目前不知道怎么处理名字里的空格
    txl263
        15
    txl263  
       2015-06-13 15:43:33 +08:00
    好了,空格的问题也解决了,命令如下
    find . -ipath '*BBB*AAA*' | sed 's/[ ]/\\ /' | xargs open -a Preview
    如果嫌麻烦写个脚本带入参数吧
    txl263
        16
    txl263  
       2015-06-13 17:19:26 +08:00
    find . -ipath '*BBB*AAA*' | sed 's/[ ]/\\ /g' | xargs open -a Preview
    加了个g替换所有的空格,不然只替换一次
    pbjacob
        17
    pbjacob  
    OP
       2015-06-13 19:41:37 +08:00
    @txl263 老兄,您真是……太认真啦!给你点个大赞啊!
    PS 头像是不是冰与火里的小恶魔?
    txl263
        18
    txl263  
       2015-06-13 19:57:14 +08:00
    如果想打开文件所在目录的话再加个sed -r 's/(.*)\/.*/\1/'

    find . -ipath '*BBB*AAA*' | sed 's/[ ]/\\ /g' |sed -r 's/(.*)\/.*/\1/'| xargs open

    有个命令dirname,可是不能放在管道后面?
    txl263
        19
    txl263  
       2015-06-13 19:58:00 +08:00
    @pbjacob 是滴,本来是跳舞的GIF,上传上来不会动了。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   883 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:57 · PVG 03:57 · LAX 11:57 · JFK 14:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.