所以情况就是这样。 我目前为我的小型非营利公司运行邮件服务器。 我的邮件服务器(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范围。
你可以通过两种方式做到这一点(嗯,我确定有更多,但这是我会做的)
安装Microsoft桌面search,您可以在服务器或工作站上执行此操作,并对其进行索引。 它应该能够看到他们是文本文件和索引的内容。 这将是两种方式中较快的。 这是免费的顺便说一句。
使用先进的文本编辑器,如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更好的原因:
我从来没有你的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选项卡。
如果在索引列表中找不到文件扩展名,则可以从高级索引选项中添加它:

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