ग्रीपिंग की तुलना में फ़ाइलों के माध्यम से खोजने का एक तेज़ तरीका?


2

क्या कंसोल से किसी फ़ाइल या फ़ाइल ट्री को अनुक्रमित करने का एक तरीका है ताकि सबस्ट्रिंग की खोज सादे हरियाली की तुलना में तेजी से की जा सके?

जरूरी नहीं कि मुझे नियमित अभिव्यक्ति के लिए समर्थन की आवश्यकता हो, हालाँकि केस असंवेदनशीलता का होना अच्छा होगा।

मैं एक साधारण कंसोल उपयोगिता की तलाश कर रहा हूं, locate/slocate/mlocateजो फ़ाइल के नाम के समान काम करेगा, लेकिन एक विन्यास स्थान में विशिष्ट माइम प्रकारों के साथ फ़ाइल सामग्री को अनुक्रमित करेगा।

अब तक एकमात्र 'तेज़-से-grep' समाधान जो मैंने पाया है fgrepकि UTF-8 ( https://stackoverflow.com/a/13913220/191246 से ) के बजाय ANSI के लिए विवश है - जबकि यह एक प्रभावशाली गति प्रदान करता है यह अभी भी बड़ी फ़ाइलों के लिए धीमा है। मैं यह जानना चाहूंगा कि क्या सूचकांक बनाने और इसके खिलाफ खोज करने का कोई 'सस्ता' तरीका है।

मैं एक विकल्प के रूप में हूश पर विचार कर रहा हूं, लेकिन इसके लिए अतिरिक्त कोडिंग की आवश्यकता होगी।

मुझे सिस्टम-लेवल इंडेक्सिंग एप्स में कोई दिलचस्पी नहीं है जैसे मैक या उनके लिनक्स समकक्षों पर स्पॉटलाइट, क्योंकि मैं फाइल या सबफ़ोल्डर स्तर पर कुछ बारीकियों की तलाश कर रहा हूं।


जवाबों:


1

अन्य विकल्प जिनके लिए सूचकांक की आवश्यकता नहीं है, में शामिल हैं:

ripgrep https://blog.burntsushi.net/ripgrep/

agउर्फ द सिल्वर सर्चर: https://geoff.greer.fm/ag/

ack https://beyondgrep.com/


एक गैर-रेगेक्स खोज में 9GB फ़ाइल में 10 सेकंड (साथ ripgrep) के तहत लिया गया - गैर-अनुक्रमित खोज के लिए अद्भुत परिणाम! grep मिनट लेता है ..
ccpizza

2

Google कोड खोज कमांड लाइन उपयोगिता (गो में लिखा) वर्णित उपयोग के मामले में फिट बैठता है।

डेबियन / ubuntu पर इसके साथ स्थापित किया जा सकता है

sudo apt install codesearch

स्रोत से संकलन करने के लिए:

यदि पहले से मौजूद नहीं है, तो पहले गोलांग वातावरण स्थापित करें , और 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

अगला, निर्माण cindexऔर csearch:

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

एक बार स्थापित स्रोत से आप होगा cindexऔर csearchअपने अधीन $GOPATH/bin- या तो उन्हें कहीं पर ले जाने के अपने के तहत $PATH, या जोड़ने के $GOPATH/binअपने को $PATHऔर ताज़ा / अपने खोल पुनरारंभ करें।

प्रयोग

फ़ाइल या फ़ोल्डर को अनुक्रमित करें:
cindex myproject_dir

में इंडेक्स बनाया जाएगा ~/.csearchindex

अब आप सूचकांक खोज सकते हैं:

csearch sausage-and-spam
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.