ฉันกำลังมองหาเครื่องมือที่จะเร็วกว่า grep บางที grep แบบมัลติเธรดหรือสิ่งที่คล้ายกัน ... ฉันได้ดูที่ indexers หลายอัน แต่ฉันไม่ได้ขายที่ฉันต้องการ index ...
ฉันมีไฟล์ข้อความประมาณ 100 ล้านไฟล์ซึ่งฉันต้อง grep สำหรับการจับคู่สตริงที่แน่นอนเมื่อค้นหาการจับคู่สตริงฉันต้องการชื่อไฟล์ที่พบการจับคู่
ie: grep -r 'exact match' > filepaths.log
มันมีข้อมูลประมาณ 4TB และฉันเริ่มการค้นหาครั้งแรกเมื่อ 6 วันก่อนและ grep ยังคงทำงานอยู่ ฉันมีการค้นหาอีกหลายสิบครั้งและฉันไม่สามารถรอ 2 เดือนเพื่อเรียกชื่อไฟล์เหล่านี้ทั้งหมด =]
ฉันได้ตรวจสอบสิ่งต่อไปนี้แล้ว แต่ฉันไม่คิดว่าฉันต้องการระฆังและนกหวีดทั้งหมดที่ตัวสร้างดัชนีเหล่านี้มาพร้อมกับฉันแค่ต้องการชื่อไฟล์ที่มีการแข่งขันเกิดขึ้น ...
- dtSearch
- เทอร์เรี
- Lucene
- Xapian
- หดตัว
- บุคคลลึกลับ
และหลังจากใช้เวลาอ่านเกี่ยวกับเครื่องยนต์เหล่านั้นหลายชั่วโมงหัวของฉันก็หมุนและฉันก็หวังว่าฉันจะมี grep ฮ่า ๆ ๆ ที่มีหลายเธรดความคิดใด ๆ และ / หรือคำแนะนำต่าง ๆ ได้รับการชื่นชมอย่างมาก!
PS: ฉันใช้ CentOS 6.5
แก้ไข: การค้นหา grep แบบมัลติเธรดส่งคืนหลายรายการคำถามของฉันคือ grep แบบมัลติเธรดเป็นตัวเลือกที่ดีที่สุดสำหรับสิ่งที่ฉันกำลังทำอยู่หรือไม่?
แก้ไข 2: หลังจาก tweaking นี่คือสิ่งที่ฉันได้มาด้วยและมันจะเร็วกว่า grep ปกติฉันยังคงหวังว่ามันจะเร็วกว่าแม้ว่า ... ฉันกำลังดูดิสก์ของฉันรอ io และยังไม่ได้สร้างขึ้น ฉันอาจทำการปรับแต่งเพิ่มเติมและ def ยังสนใจคำแนะนำใด ๆ =]
find . -type f -print0 | xargs -0 -n10 -P4 grep -m 1 -H -l 'search string'