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

2015-06-12 14:25:31 +08:00
 pbjacob
比如,对于将要搜索的文件,我能提供如下线索:

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

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

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/198001

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX