我可以在 Windows Server 2008 中执行“一次性”文件内容搜索而不将文件夹添加到索引吗?

我可以在 Windows Server 2008 中执行“一次性”文件内容搜索而不将文件夹添加到索引吗?

如果文件夹不在搜索索引中,我可以搜索文件夹中包含特定字符串的文件吗?

因此,假设文件夹“textFiles”不在索引中。我在 Windows 资源管理器中导航到此文件夹。我在搜索框中输入“.ini”,我希望看到仅包含“b.txt”的结果列表

FOLDER C:\textFiles\

FILE  a.php  
CONTENT once twice thrice mice moose monkey

FILE b.txt
CONTENT mingle muddle middle.ini banana beer

FILE c.spo
CONTENT sellotape stapler phone book

我没有权限将文件夹添加到 Windows 索引,也没有权限安装或运行任何未随服务器或批准的应用程序附带的可执行文件。

如果有必要的话我会很乐意使用 Windows 原生命令行解决方案。

答案1

您可以使用 Microsoft 提供的命令行工具 findstr.exe 执行此操作。

  1. 打开命令提示符并导航到 c:\textfiles

  2. 运行命令findstr /L /M /C:"ini" *.*

    注意:您可以添加 /S 来搜索所有子目录

FINDSTR 的完整详细信息

  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.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurrences of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

For full information on FINDSTR regular expressions refer to the online Command
Reference.

答案2

最简单的解决办法是暂时关闭 Windows Search,如果您有权限:

  1. net stop wsearch

  2. 在 Windows 资源管理器中的文件夹中进行搜索,它将无需索引进行搜索。

  3. net start wsearch

虽然这适用于小文件夹,但您可能会遇到较大文件夹的问题。

搜索文件内容的替代方法

Windows Grep基于 Linuxgrep理念,通过提供一个允许您查看匹配行的 GUI;这使您可以快速浏览文件以查找各种出现的情况及其上下文:

它提供了相当多的搜索选项,因此也适合更大或更复杂的文件夹:

如果您不想查看所有设置,它还有一个简单的向导,您可以配置文本结果的显示方式(行号、显示部分/整行、固定字体......)

搜索文件名的替代方法

搜索一切是 Windows 上最小的搜索引擎之一,因此易于获取和运行,它具有非常干净和简单的用户界面,可让您非常快速地索引文件并在其中进行搜索。它占用的资源最少,如果您保持打开状态,它会进行实时更新,因此如果您想要,它甚至可以替代 Windows Search...

我总共有 904,108 个文件和文件夹,与普通用户相比,这个数字相当多,当我输入类似以下内容时,Super User它会显示即刻。索引编制也不需要很长时间;因此,只需打开它等待几秒钟,然后就可以立即进行搜索。

举例来说,您可以像这样显示文件夹中的所有可执行文件:*.exe "C:\Program Files"

相关内容