Cara yang lebih cepat untuk mencari melalui file daripada mengambil?

2

Apakah ada cara untuk mengindeks file atau pohon file dari konsol sehingga mencari substring dapat dilakukan lebih cepat daripada grepping biasa?

Saya tidak perlu memerlukan dukungan untuk ekspresi reguler, meskipun tidak peka terhadap kasus akan baik untuk dimiliki.

Saya mencari utilitas konsol sederhana yang akan bekerja serupa dengan locate/slocate/mlocatetetapi bukannya nama file akan mengindeks isi file dengan tipe mime tertentu di lokasi yang dapat dikonfigurasi.

Sejauh ini satu-satunya solusi 'lebih cepat daripada grep' yang saya temukan fgrepdibatasi untuk ANSI daripada UTF-8 (dari https://stackoverflow.com/a/13913220/191246 ) - sementara itu memberikan speedup yang mengesankan, masih terlalu lambat untuk file besar. Saya ingin tahu apakah ada cara 'murah' untuk membuat indeks dan mencarinya.

Saya mempertimbangkan whoosh sebagai opsi tapi itu akan membutuhkan pengkodean tambahan.

Saya tidak tertarik pada aplikasi pengindeksan tingkat sistem seperti sorotan pada mac atau rekan-rekan linux mereka, karena saya mencari sesuatu yang granular pada tingkat file atau subfolder.

ccpizza
sumber
Coba beagle
Ipor Sircer

Jawaban:

2

Utilitas baris perintah pencarian kode Google (ditulis dalam Go) sesuai dengan use case yang dijelaskan.

Pada debian / ubuntu dapat diinstal dengan

sudo apt install codesearch

Untuk mengkompilasi dari sumber:

Jika belum ada, instal dulu lingkungan golang , dan tentukan GOPATHvariabelnya:

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

Selanjutnya, bangun cindexdan csearch:

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

Setelah diinstal dari sumber, Anda akan memiliki cindexdan di csearchbawah Anda $GOPATH/bin- pindahkan ke suatu tempat di bawah Anda $PATH, atau tambahkan $GOPATH/binke Anda $PATHdan segarkan / mulai ulang shell Anda.

Pemakaian

Buat indeks file atau folder:
cindex myproject_dir

Indeks akan dibuat di ~/.csearchindex.

Sekarang Anda dapat mencari indeks:

csearch sausage-and-spam
ccpizza
sumber