搜索文件比点击更快的方式?


2

有没有办法从控制台索引文件或文件树,以便比普通的grepping更快地搜索子字符串?

我不一定需要支持正则表达式,尽管不区分大小写会很好。

我正在寻找一个类似于它的简单控制台实用程序 locate/slocate/mlocate 但是,不是文件名,而是在可配置的位置使用特定的mime类型索引文件内容。

到目前为止,我发现的唯一“快于grep”的解决方案是 fgrep 约束于ANSI而不是UTF-8(来自 https://stackoverflow.com/a/13913220/191246 ) - 虽然它提供了令人印象深刻的加速,但它对于大文件来说仍然太慢。我想知道是否有一些“便宜”的方法来创建索引并搜索它。

我正在考虑 作为一种选择,但需要额外的编码。

我对系统级索引应用程序不感兴趣,比如聚光灯在mac或它们的linux对应物上,因为我正在寻找文件或子文件夹级别的粒度。


Answers:



2

Google代码搜索命令行实用程序 (用Go编写)适合所描述的用例。

在debian / ubuntu上可以安装

sudo apt install codesearch

要从源代码编译:

如果尚未出现,请先安装 golang 环境,并定义 GOPATH 变量:

sudo mkdir -p /usr/local/go
sudo chown myusername /usr/local/go

## normally you'd put this in your ~/.bashrc
export GOPATH=/usr/local/go

## on ubuntu/debian:
sudo apt install golang

## on osx
brew install golang

接下来,构建 cindexcsearch

go get github.com/google/codesearch/cmd/...

从源头安装后,您将拥有 cindexcsearch 在你的 $GOPATH/bin - 要么把它们移到你家的某个地方 $PATH,或添加 $GOPATH/bin 到你的 $PATH 并刷新/重新启动shell。

用法

索引文件或文件夹:
cindex myproject_dir

索引将在中创建 ~/.csearchindex

现在您可以搜索索引:

csearch sausage-and-spam
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.