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/mlocate
tetapi 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 fgrep
dibatasi 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.
sumber
Jawaban:
Alternatif lain yang tidak memerlukan indeks, termasuk:
ripgrep
https://blog.burntsushi.net/ripgrep/ag
alias pencari perak: https://geoff.greer.fm/ag/ack
https://beyondgrep.com/sumber
ripgrep
) - hasil yang luar biasa untuk pencarian yang tidak diindeks! grep butuh beberapa menit ..Utilitas baris perintah pencarian kode Google (ditulis dalam Go) sesuai dengan use case yang dijelaskan.
Pada debian / ubuntu dapat diinstal dengan
Untuk mengkompilasi dari sumber:
Jika belum ada, instal dulu lingkungan golang , dan tentukan
GOPATH
variabelnya:Selanjutnya, bangun
cindex
dancsearch
:Setelah diinstal dari sumber, Anda akan memiliki
cindex
dan dicsearch
bawah Anda$GOPATH/bin
- pindahkan ke suatu tempat di bawah Anda$PATH
, atau tambahkan$GOPATH/bin
ke Anda$PATH
dan segarkan / mulai ulang shell Anda.Pemakaian
Buat indeks file atau folder:Indeks akan dibuat di
~/.csearchindex
.Sekarang Anda dapat mencari indeks:
sumber