AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 28118
Accepted
Matt
Matt
Asked: 2009-06-19 08:18:30 +0800 CST2009-06-19 08:18:30 +0800 CST 2009-06-19 08:18:30 +0800 CST

在文本文件中搜索

  • 772

这就是这种情况。我目前为我的小型非营利公司运行一个邮件服务器。我的邮件服务器(Merak Mail Server)将日志保存在 .log 文件中,并将邮件保存为 .tmp 文件。本质上,这些只是保存在服务器上的文本文件。

问题是当我将文本放入 Windows 资源管理器上的“包含文本”字段时,它总是会丢失文件并告诉我没有返回结果。然后当我一一搜索文件时(充其量是痛苦的),我找到了我需要的文件。

我对搜索功能的理解不够好,或者我的索引错误。我真的不在乎我需要用什么来搜索文件,即使是第三方应用程序也可以,我只想在一个框中输入一个电子邮件地址并搜索我所有的日志文件或电子邮件文件并找到我要找哪一个。它可以是 Windows Search 或其他东西,只要我能找到完成工作的方法,我就会很高兴。支付解决方案也很好。

提前感谢大家。

windows-server-2003 search
  • 16 16 个回答
  • 12863 Views

16 个回答

  • Voted
  1. Best Answer
    chaos
    2009-06-19T08:21:56+08:002009-06-19T08:21:56+08:00

    我会说给WinGrep一个机会。

    • 8
  2. sysadmin1138
    2009-06-19T08:41:25+08:002009-06-19T08:41:25+08:00

    如果它们都在一个目录中,我可以看到一个两步过程来帮助你。

    第 1 步:命令行

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

    F:\directory> 找到 "[email protected]" *

    然后它将在该目录中的所有文件中搜索您要查找的字符串。当它找到一个时,它会给你文件名,如下所示:

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

    这会告诉你要在里面搜索哪个文件。

    第 2 步:在文件中搜索

    这一步你已经知道了。第一步只是缩小搜索范围。

    • 4
  3. Bob
    2010-03-19T07:16:56+08:002010-03-19T07:16:56+08:00

    在命令提示符下使用 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 
    
    • 4
  4. SpaceManSpiff
    2009-06-19T08:24:46+08:002009-06-19T08:24:46+08:00

    您可以通过以下两种方式之一进行操作(我相信还有更多方法,但这是我会做的)

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

    2. 使用 Notepad++ 或 Textpad 等高级文本编辑器并使用文件中的文件选项,该选项将搜索目录中的所有文件。但是当您需要运行搜索时,这将花费更长的时间。Notepad++ 是免费的,Textpad 成本低但可以免费试用。

    如果这是您需要经常做的事情,我会选择 1。如果它不经常发生,请尝试 2​​,看看它是否适合您。

    • 2
  5. Ward - Reinstate Monica
    2009-06-19T08:45:16+08:002009-06-19T08:45:16+08:00

    为此,我喜欢 UltraEdit。您可以告诉它搜索目录中的所有文件(或将其限制为某些文件类型或任何其他通配符)以获取您指定的字符串。如果它在多个文件中或在一个文件中多次找到您的文本,它会为您提供它找到的所有实例的列表,然后单击一个会将您带到该文件/位置。

    • 2
  6. Jim B
    2009-06-19T09:12:54+08:002009-06-19T09:12:54+08:00

    然后使用powershell:

    选择字符串 -path c:\mylogfiledir*.log -pattern "我的字符串"

    请注意,在 powershell v2 中,您还可以使用 -context 开关来获取找到匹配项的行上方和下方的行

    • 2
  7. chmeee
    2009-06-19T08:48:26+08:002009-06-19T08:48:26+08:00

    您可以使用ack '一个专门用于大型源代码树的类似 grep 的程序'。Ack 类似于 grep,但用 perl 编写(在 Windows 上运行良好)。这些是它被认为比 grep 更好的原因:

    1. 它的速度非常快,因为它只搜索您想要搜索的内容。
    2. ack 是纯 Perl,所以它在 Windows 上运行得很好。
    3. 独立版本不使用非标准模块,因此您可以将其放入 ~/bin 中而不必担心。
    4. 默认情况下递归搜索目录,而忽略 .svn、CVS 和其他 VCS 目录。* 您更愿意输入哪个?$ grep 模式 $(find . -type f | grep -v '.svn') $ ack 模式
    5. ack 忽略大部分你不想搜索的废话 * VCS 目录 * blib、Perl 构建目录 * 备份文件,如 foo~ 和 #foo# * 二进制文件、核心转储等
    6. 忽略 .svn 目录意味着 ack 在树中搜索比 grep 更快。
    7. 让您指定要搜索的文件类型,如 --perl 或 --nohtml。* 您更愿意输入哪个?$ grep pattern $(find . -name ' .pl' -or -name ' .pm' -or -name '*.pod' | grep -v .svn) $ ack --perl pattern 注意 ack 的 --perl 也检查没有后缀的文件的 shebang 行,而 find 命令不会。
    8. 无需使用 ack -f 搜索即可使用文件过滤功能。这使您可以创建给定类型的文件列表。$ ack -f --perl > 所有 perl 文件
    9. 搜索结果的颜色突出显示。
    10. 使用真正的 Perl 正则表达式,而不是 GNU 子集。
    11. 允许您使用 Perl 的特殊变量指定输出 * 示例:ack '(Mr|Mr?s)。(史密斯|琼斯)' --output='$&'
    12. 许多命令行开关与 GNU grep 中的相同: -w 仅进行单词搜索 -c 显示每个匹配文件的计数 -l 给出文件名而不是匹配行等。
    13. 命令名称的输入字符减少了 25%!节省几天的空闲时间!哎呀,与 grep -r 相比,它短了 50%。
    • 1
  8. mrTomahawk
    2009-06-19T09:40:04+08:002009-06-19T09:40:04+08:00

    因为这样的事情,我从不使用 Windows 搜索/查找。我通常最终通过一个很好的旧命令提示符进行搜索。结果比搜索/查找 GUI 快 99% 且更准确。

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

    如果您想在结果中进行搜索,您甚至可以将结果通过管道传送到Find 命令中。

    • 1
  9. mctsonic
    2009-06-30T08:07:37+08:002009-06-30T08:07:37+08:00

    不要忘记 Logparser 也可以是一个很好的文本解析器/搜索工具。'TEXTWORD 和 TEXTLINE 输入' 格式和 'CSV 和 TSV 输入' 格式值得运行 logparser -i:INPUTFORMATYOUWISHTOKNOWMOREABOUT -h 'help' 调用。“帮助”文件中也有示例。

    • 1
  10. Hondalex
    2009-06-30T10:48:29+08:002009-06-30T10:48:29+08:00

    我使用特工 Ransack,效果很好。它还将它自己附加到右键单击菜单中,因此您可以右键单击该文件夹并说 Agent Ransack,它会在那里搜索。哦,最棒的是,它是免费的。

    我用它来搜索文本文件以及 Windows 中的普通搜索不会搜索的临时文件夹。

    希望能帮助到你。

    • 1

相关问题

  • IIS 6.0 (Windows Server 2003) 上的 HTTP 压缩

  • 从 2003 年迁移到 2008 年 Microsoft 群集技术

  • 是否有用于编辑 MS Search Server 2008 注册表设置的实用程序?[关闭]

  • 有什么理由使用 Windows Server 2003 而不是 Server 2008?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve