繁体   English   中英

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

[英]linux + find word in file under directory but quickly

我有以下命令

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

使用此命令,我可以在/ var下的任何文件中找到param1字符串

但是这需要很长时间。

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

谢谢

耶尔

grep -r "string"

这个发现不是必要的。

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

链接文字

另外我认为这属于superuser.com

查看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" "$@"' arg0 '{}' +
find /var -type f -exec sh -c 'grep -ls "$0" "$@"' "param1" '{}' +
find /var -type f  | xargs grep "param1" 

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

grep -r "param1" /var 

我认为会稍微多一些。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM