Grepping'ten daha hızlı dosya aramak için mi?


2

Konsoldan bir dosyayı veya dosya ağacını dizine eklemenin bir yolu var mıdır, böylece alt dizileri aramak düz izlemeden daha hızlı yapılabilir mi?

Düzenli ifadeler için mutlaka desteğe ihtiyacım yok, ancak küçük harf duyarsızlığı olması iyi olurdu.

Benzer bir şekilde çalışacak basit bir konsol yardımcı programı arıyorum locate/slocate/mlocate ancak dosya adları yerine, yapılandırılabilir bir konumda belirli Mime türleriyle dosya içeriğini dizine eklersiniz.

Şimdiye kadar bulduğum tek 'grep-den-daha hızlı' çözüm fgrep UTF-8 yerine ANSI ile sınırlandırılmış ( https://stackoverflow.com/a/13913220/191246 ) - etkileyici bir hızlanma sağlarken, büyük dosyalar için hala çok yavaş. Dizin oluşturmanın ve buna karşı arama yapmanın 'ucuz' bir yolu olup olmadığını bilmek istiyorum.

düşünüyorum vızıldamak bir seçenek olarak ancak bu ekstra kodlama gerektirir.

Mac veya spot meslektaşları üzerindeki spot ışığı gibi sistem düzeyinde indeksleme uygulamaları ile ilgilenmiyorum, çünkü dosya veya alt klasör düzeyinde ayrıntılı bir şey arıyorum.


Yanıtlar:



2

Google kod arama komut satırı yardımcı programları (Go ile yazılmış) tarif edilen kullanım durumuna uyuyor.

Debian / ubuntu üzerine kurulabilir

sudo apt install codesearch

Kaynaktan derlemek için:

Zaten yoksa, önce golang çevre ve GOPATH değişken:

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

Ardından, inşa cindex ve csearch:

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

Kaynaktan kurulduktan sonra cindex ve csearch senin altında $GOPATH/bin - ya onları altında bir yere götür $PATHveya ekleyin $GOPATH/bin senin için $PATH ve kabuğunuzu yenileyin / yeniden başlatın.

kullanım

Bir dosya veya klasörü indeksleyin:
cindex myproject_dir

Endeks oluşturulacak ~/.csearchindex.

Şimdi dizini arayabilirsiniz:

csearch sausage-and-spam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.