我有以下命令
find /var -type f -exec grep "param1" {} \; -print
使用此命令,我可以在/ var
下的任何文件中找到param1字符串但是这需要很长时间。
我需要其他可能性来查找文件中的字符串,但比我的示例
快得多THX
耶尔
答案 0 :(得分:12)
答案 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的时间。