如何在大型文本文件上快速运行递归grep命令

问题描述 投票:1回答:1

我有一个大型文本文件文件夹-大约20,000个文本文件,总计约65gb。每当我需要搜索字符串时,我都会运行一个递归grep命令,因为我不知道该字符串将在哪个文件中。以下是我的代码:

仅查找一个字符串时:

LC_ALL=C fgrep -r -i "text" /path/to/folder

寻找2个字符串时:

LC_ALL=C fgrep -r -i "text1" /path/to/folder | fgrep "text2"

问题是,当我在一个目录中搜索价值65gb的文本文件时,搜索可能需要很长时间(45-60分钟之间的任何时间)。有什么办法可以在保持递归和区分大小写之类的选项的同时加快搜索速度?也许一种方法是首先为其编制索引,但我不知道如何执行此操作。

linux search indexing terminal grep
1个回答
0
投票

显然,一旦使用了-i标志,就无法在同一命令中将其关闭。

但是,您可以使用单个grep来解决此问题:

LC_ALL=C grep -Fre "[Tt][Ee][xX][tT]1" -e "text2" /path/to/folder

实际上,text1现在不区分大小写。

$ cat test
TEXT1 text2
TEXT1 TEXT2
text1 TEXT2
text1 text2

$ grep -Fre "[Tt][Ee][xX][tT]1" -e "text2" .
./test:TEXT1 text2
./test:text1 text2
© www.soinside.com 2019 - 2024. All rights reserved.