LINUX +文件中查找单词目录下,但很快
问题描述:
我有以下命令LINUX +文件中查找单词目录下,但很快
find /var -type f -exec grep "param1" {} \; -print
使用此命令我可以找到任何文件中的参数1串在/ var
但时间,它需要因为这很长。
我需要另一种可能的文件中查找字符串,但速度更快更然后我的例子
THX
耶尔
答
find /var -type f | xargs grep "param1"
会稍微快一点(不产卵过程对每个文件)
grep -r "param1" /var
会略多,所以我认为。
答
尝试在大多数情况下也使用ack,即“better than grep”。其功能包括默认忽略典型垃圾文件(例如.svn或.git目录,核心转储文件,备份文件),使用大量预定义文件类以及良好输出格式的功能。
答
查看grep命令的-l选项以提高速度。为了加快find命令使用:
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" "[email protected]"' arg0 '{}' +
find /var -type f -exec sh -c 'grep -ls "$0" "[email protected]"' "param1" '{}' +
+0
对不起,但它不工作 find/var -type f -exec sh -c'grep -ls“$ 0”“$ @”'“param1”'{}'+ find:missing argument to' - EXEC” – yael 2010-06-03 12:46:40
答
您可以使用定位的索引(如果你不依赖于所添加的文件/删除)
grep "param1" $(locate -r '^/var')
答
一些命令优化是有帮助的,但是我通过掠夺200万个文件获得的最大速度是使用SSD硬盘。相同的查询花了1/5的时间。
但如果文件太“太多”,这可能会导致问题。此外,最好相应地使用'-print0'和'-0',并添加'-n'以防止预览可能的问题。 – ShinTakezou 2010-06-03 11:18:05