在文本文件内search

所以情况就是这样。 我目前为我的小型非营利公司运行邮件服务器。 我的邮件服务器(Merak邮件服务器)将.log文件和邮件保存为.tmp文件。 基本上这些只是保存在服务器上的文本文件。

问题是,当我把文本放入Windows资源pipe理器的“包含文本”字段时,它总是错过了这些文件,并告诉我没有结果返回。 然后,当我逐一search文件(痛苦的最好),我find我需要的文件。

我不太了解searchfunction,或者我有索引错误。 我真的不在乎我需要用来search文件,即使是第三方应用程序也适合我,我只是想input一个电子邮件地址到一个盒子里,search我所有的日志文件或电子邮件文件,并find从哪一个我正在寻找。 它可以是Windowssearch或其他东西,只要我能find一个方法来完成工作,我会很高兴。 付款解决scheme也很好。

谢谢大家提前。

我会说给WinGrep一枪。

如果他们都在一个目录中,我可以看到两个步骤帮助你。

第1步:命令行

打开CMD shell并转到您要查找的目录。 然后发出find命令:

  F:\ directory>find“[email protected]”* 

然后,它会search该目录中的所有文件,查找您要查找的string。 当它find一个,它会给你的文件名,如下所示:

  ---------- MSGTRK20090603-1.LOG
 2009-06-03T09:11:37.486Z,192.168 

哪个会告诉你哪个文件去search里面。

步骤2:在文件内search

这一步你已经知道了。 第一步就是缩小search范围。

你可以通过两种方式做到这一点(嗯,我确定有更多,但这是我会做的)

  1. 安装Microsoft桌面search,您可以在服务器或工作站上执行此操作,并对其进行索引。 它应该能够看到他们是文本文件和索引的内容。 这将是两种方式中较快的。 这是免费的顺便说一句。

  2. 使用先进的文本编辑器,如Notepad ++或Textpad,并使用文件中的文件选项,将通过目录中的所有文件search。 但是,当您需要运行search时,这将需要更长的时间。 Notepad ++是免费的,Textpad有一个小的成本,但是可以免费试用。

如果这是你需要经常做的事情,那么我会用1.如果偶尔出现频繁的事情,试试2,看看它是否适合你。

我喜欢这个UltraEdit。 您可以告诉它将您指定的string中的所有文件(或将其限制为某些文件types或任何其他通配符)。 如果在多个文件中find您的文本,或者在文件中多次find文本,则会为您提供它find的所有实例的列表,然后单击一个将您带到该文件/位置。

然后使用powershell:

select-string -path c:\ mylogfiledir * .log -pattern“my string”

请注意,在powershell v2中,您也可以使用-context开关来获取find匹配的行上下的行

在命令提示符处使用findstr

C:\>findstr /? Searches for strings in files. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]] strings [[drive:][path]filename[ ...]] /B Matches pattern if at the beginning of a line. /E Matches pattern if at the end of a line. /L Uses search strings literally. /R Uses search strings as regular expressions. /S Searches for matching files in the current directory and all subdirectories. /M Prints only the filename if a file contains a match. etc. Example: C:\>findstr /s /m [email protected] c:\temp\*.txt c:\temp\*.log c:\temp\t\t.log c:\temp\t\t.txt c:\temp\t\tt.log c:\temp\tt.txt Redirect to a file and open in notepad: C:\>findstr /s /m [email protected] c:\temp\*.txt c:\temp\*.log > c:\temp\myemail.txt & notepad c:\temp\myemail.txt 

您可以使用ack “特别针对大型源代码树的类似grep的程序”。 Ack就像grep,但写在perl(在Windows上工作正常)。 这就是为什么它比grep更好的原因:

  1. 它非常快,因为它只search你想search的东西。
  2. ack是纯粹的Perl,所以它在Windows上运行就好了。
  3. 独立版本不使用非标准模块,所以你可以把它放在你的〜/ bin中而不用担心。
  4. 在默认情况下通过目录recursionsearch,而忽略.svn,CVS和其他VCS目录。 *你宁愿打字? $ grep pattern $(find。-type f | grep -v'.svn')$ ack pattern
  5. ack忽略了大部分你不想search的垃圾* VCS目录* blib,Perl构build目录*备份文件如foo〜和#foo#*二进制文件,核心转储等
  6. 忽略.svn目录意味着对于通过树进行search,ack比grep快。
  7. 让您指定要search的文件types,如–perl或–nohtml。 *你宁愿打字? $ grep pattern $(find。-name'.pl'-or -name'.pm'-or -name'* .pod'| grep -v .svn)$ ack –perl pattern请注意,ack的–perl也是检查文件没有后缀的文件行,find命令不会。
  8. 文件筛选function可以不用ack -fsearch。 这使您可以创build给定types的文件列表。 $ ack -f –perl> all-perl-files
  9. search结果的颜色突出显示。
  10. 使用真正的Perl正则expression式,而不是GNU子集。
  11. 允许你使用Perl的特殊variables来指定输出*示例:ack'(Mr | Mr?s)。 (Smith | Jones)'–output ='$&'
  12. 许多命令行开关与GNU grep中的相同:-w不进行单词search-c显示每个匹配文件的计数-l给出文件名而不是匹配行等。
  13. 命令名称键入的字符less了25%! 节省空闲时间! 哎呀,比grep -r要短50%。

我从来没有你的Windowssearch/查找,因为这样的事情。 我通常最终会通过一个很好的旧命令提示符进行search。 search/查找GUI的结果比99%快得多并且更准确。

 c: cd \ dir /s *.log *.tmp 

如果要在结果中进行search,您甚至可以将结果input到“ 查找” 命令中 。

不要忘记Logparser也可以是一个很好的文本parsing器/search工具。 “TEXTWORD和TEXTLINEinput”格式以及“CSV和TSVinput”格式值得运行logparser -i:INPUTFORMATYOUWISHTOKNOWMOREABOUT -h'help'调用。 “帮助”文件中也有一些例子。

我使用Agent Ransack ,它工作得很好。 它也将它自己附加到右键单击菜单,所以你可以右键单击该文件夹,并说Agent Ransack,它会在那里search。 哦,最好的事情,它是免费的。

我用它来search文本文件以及从Windows正常search不会search的临时文件夹。

希望能帮助到你。

我使用PsPad (一个免费的高级文本编辑器)来做类似的日志search。 如果您转到search – >search/replace文件,您可以search特定目录中的一组文件中的任何文本string。

如果你想使用Windows资源pipe理器:

单击更改首选项更改文件和文件夹search行为确保select“高级”

点击更多高级选项确保选中“隐藏的文件和文件夹”

然后工具文件夹选项查看选项卡选中“显示隐藏的文件和文件夹”取消选中“隐藏已知文件types的扩展名”取消选中“隐藏受保护的操作系统文件”

我做了logfile(和其他文本文件search)与GNU grep(对于窗口)的下载并放在我想扫描的文件的目录(或放在你的path)

然后,在命令提示符下键入

grep -H [email protected] * .tmp >> output.txt

这将给你一个输出文件的文件名(和电子邮件地址的行)。

我会说这是WildReplace的工作。 WildReplace是完全免费的,只需search文本文件(如.xml文件)即可。

Wildreplace做grepWin和WinGrep会做的一切,并在我看来更好地显示结果。

Windows并不实际search所有文件的文本。 请参阅文章http://support.microsoft.com/kb/309173 。 可以添加registry项,这些registry项将添加到此types的search将find的文件的types。

Windowssearch默认search非索引位置的文件名,并search索引位置中的文件名及其内容。 但是你可以改变这个,如果你去工具 – >文件夹选项 – >search选项卡。

如果在索引列表中找不到文件扩展名,则可以从高级索引选项中添加它:

在这里输入图像说明

令人惊讶的是没有人谈论这个。