Sto cercando uno strumento che sarà più veloce di grep, forse un grep multi-thread o qualcosa di simile ... Ho cercato un sacco di indicizzatori, ma non sono stato venduto e ho bisogno di un indice ...
Ho circa 100 milioni di file di testo, che ho bisogno di grep per corrispondenze esatte di stringhe, quando trovo una corrispondenza di stringhe, ho bisogno del nome del file in cui è stata trovata la corrispondenza.
ie: grep -r 'exact match' > filepaths.log
Sono circa 4 TB di dati e ho iniziato la mia prima ricerca 6 giorni fa e grep è ancora in esecuzione. Ho ancora una dozzina di ricerche da fare e non posso aspettare 2 mesi per recuperare tutti questi nomi di file =]
Ho esaminato quanto segue, tuttavia, non penso di aver bisogno di tutte le campane e fischietti che vengono con questi indicizzatori, ho solo bisogno del nome del file in cui si è verificata la corrispondenza ...
- dtSearch
- Terrier
- Lucene
- Xapian
- Rinculo
- Sfinge
e dopo aver passato ore a leggere su tutti quei motori, mi gira la testa e vorrei solo avere un grep lol multi-thread, qualsiasi idea e / o suggerimento sono molto apprezzati!
PS: utilizzo CentOS 6.5
EDIT: La ricerca di grep multi-thread restituisce diversi elementi, la mia domanda è: un grep multi-thread è l'opzione migliore per quello che sto facendo?
EDIT2: Dopo alcune modifiche, questo è quello che ho escogitato, e sta andando molto più veloce del grep normale, vorrei ancora che fosse più veloce però ... Sto guardando il mio disco, aspetto, e non si sta ancora accumulando , Potrei fare qualche altra modifica, e sicuramente ancora interessato a qualsiasi suggerimento =]
find . -type f -print0 | xargs -0 -n10 -P4 grep -m 1 -H -l 'search string'