linux +在目录下的文件中查找单词但很快

时间:2010-06-03 10:28:38

标签: linux bash

我有以下命令

find /var  -type f -exec grep "param1" {} \; -print

使用此命令,我可以在/ var

下的任何文件中找到param1字符串

但是这需要很长时间。

我需要其他可能性来查找文件中的字符串,但比我的示例

快得多

THX

耶尔

6 个答案:

答案 0 :(得分:12)

grep -r "string"

发现不是必要的。

这是一个很好的链接,虽然过时了。

link text

另外我认为这属于superuser.com

答案 1 :(得分:2)

查看grep命令的-l选项以获得速度提升。要加速查找命令,请使用:

find ... -exec sh -c '...' arg0 '{}' +


# grep ... -l: print files with matches, but stop scanning the file on the first match
grep -lsr "param1" /var

find /var -type f -exec sh -c 'grep -ls "param1" "$@"' arg0 '{}' +
find /var -type f -exec sh -c 'grep -ls "$0" "$@"' "param1" '{}' +

答案 2 :(得分:1)

find /var -type f  | xargs grep "param1" 

会稍快一些(每个文件没有进程产生)

grep -r "param1" /var 
我认为会稍微多一点。

答案 3 :(得分:1)

还尝试使用ack,大多数情况下都是“better than grep”。它的功能包括默认情况下忽略典型的垃圾文件(例如.svn或.git目录,核心转储,备份文件),使用大量预定义文件类的能力,良好的输出格式。

答案 4 :(得分:1)

您可以使用locate的索引(如果您不依赖于添加/删除的文件)

grep "param1" $(locate -r '^/var')

答案 5 :(得分:-1)

其中一些命令优化很有帮助,但是我从200万个文件中获得的最大速度是使用SSD硬盘。相同的查询占用了1/5的时间。