寻找工具在命令行上搜索文件中的文本

时间:2011-04-24 20:39:53

标签: search web find

您好  我正在寻找一些在文件ex中使用关键字或模式搜索的脚本或程序。 php,html等,并显示此文件在哪里

我使用命令cat / home / * | grep“关键字”  但我有太多的文件夹和文件,这个命令导致很长的正常运行时间:/

我需要这个脚本来查找假网站(paypal,ebay等)

2 个答案:

答案 0 :(得分:1)

find /home -exec grep -s "keyword" {} \; -print

答案 1 :(得分:1)

您并没有真正说出您正在使用的操作系统(和shell)。您可能想重新提出问题以帮助我们。

因为你提到cat | ...,我假设你使用的是Unix / Linux变体,所以这里有一些查看文件的指针。 (bmargulies解决方案也很好)。

  

我正在寻找一些在文件中使用关键字或模式搜索的脚本或程序

grep是搜索文本字符串文件的基本程序。它的用法是

grep [-options] 'search target' file1 file2 .... filen

(请注意,'搜索目标'包含一个空格,如果你没有用双引号或单引号括起searchTarget中的空格,你将有一个小错误要调试。)

(另请注意,'搜索目标'可以使用各种外卡字符,例如。,?,+,,。等等,这超出了您的范围题)。 ......无论如何......

正如我猜你发现的那样,即使使用通配符文件名扩展,你也只能将这么多文件一次塞进命令行。 Unix / linux几乎总是有一个可以帮助它的实用工具,

startDir=/home
find ${startDir} -print | xargs grep -l 'Search Target'

如果您的文件名包含空白字符或换行符,正如一个人将很乐意提醒您的那样,这将需要进一步的增强功能。


grep可用的选项可能因您使用的操作系统而异。如果您很幸运,请键入以下内容以获取本地grep的手册页。

man grep

如果您没有为大尺寸设置页面缓冲区,则可能需要执行

man grep | page

所以你可以看到'文档'的顶部。按任意键进入下一页,当您在文档末尾时,按下最后一个键可返回命令提示符。

大多数greps可能对您有用的一些选项是

-i (ignore case)
-l (list filenames only (where txt is found)

还有fgrep,通常被解释为'file'grep 因为你可以给它一个扫描搜索目标的文件,并像

一样使用
fgrep [-other_options] -f srchTargetsFile file1 file2 ... filen

  

我需要这个脚本来查找假网站(paypal,ebay等)

最终解决方案

你可以制作像

这样的srchFile

paypal.fake.com ebay.fake.com etc.fake.com

然后与上面结合使用,运行以​​下

startDir=/home
find ${startDir} -print | xargs fgrep -il -f srchFile 

有些greps要求-fsrchFile一起运行。

现在你找到所有文件开始/ home,用fgrep搜索所有文件中的paypay,ebay等。 -l表示它只会打印找到匹配项的文件名。您可以删除-l,然后您将看到找到的内容的输出,前缀为文件名。

IHTH。