Puis-je effectuer une recherche de contenu de fichier «unique» dans Windows Server 2008 sans ajouter le dossier à l'index?

9

Puis-je rechercher des fichiers contenant une chaîne spécifique dans un dossier si ce dossier n'est pas dans l'index de recherche?

Donc, disons que le dossier 'textFiles' n'est pas dans l'index. Je navigue vers ce dossier dans l'Explorateur Windows. Je tape «.ini» dans la zone de recherche Je veux voir une liste de résultats contenant uniquement «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

Je n'ai pas l'autorisation d'ajouter des dossiers à l'index Windows et je n'ai pas l'autorisation d'installer ou d'exécuter des exécutables qui n'ont pas été fournis avec le serveur ou les applications approuvées.

Je serais satisfait d'une solution de ligne de commande native Windows si nécessaire.

G-.
la source

Réponses:

7

Vous pouvez le faire avec l'outil de ligne de commande findstr.exe fourni par Microsoft.

  1. Ouvrez une invite de commande et accédez à c: \ textfiles

  2. exécuter la commande findstr /L /M /C:"ini" *.*

    remarque: vous pouvez ajouter / S pour rechercher dans tous les sous-répertoires

Tous les détails sur 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.
Jeremy W
la source
Je vois ce que tu as fait là-bas ... : D
Tamara Wijsman
Merci! J'aurais dû y penser moi-même. Prime accordée
G-.
Qu'est-ce que j'ai fait? ..
G-.
1
@ G-.: Cela faisait référence à Jeremy, à la façon dont il a utilisé une approche «intelligente @ $ #» alors que nous proposions des solutions moins réalisables. C'est toujours agréable d'avoir une troisième personne qui vienne et prenne l'os (générosité) des autres qui se battent ...
Tamara Wijsman
1

La solution la plus simple consiste à désactiver momentanément la recherche Windows , si vous disposez des autorisations:

  1. net stop wsearch

  2. Faites votre recherche dans le dossier de l'Explorateur Windows, il recherchera sans index.

  3. net start wsearch

Bien que cela fonctionne pour les petits dossiers, vous pouvez rencontrer des problèmes avec les plus grands.

Une alternative pour rechercher le contenu d'un fichier

Windows Grep se base sur l' grepidée de Linux , en fournissant une interface graphique qui vous permet de voir les lignes correspondantes; cela vous permet de parcourir rapidement les fichiers à la recherche des différentes occurrences et de leur contexte:

Il fournit de nombreuses options de recherche, donc convient également aux dossiers plus grands ou plus complexes:

Il dispose également d'un assistant simple si vous ne vous souciez pas de voir tous les paramètres, et vous pouvez configurer la façon dont les résultats du texte s'affichent (numéros de ligne, afficher la partie / la ligne entière, police fixe, ...)

Une alternative pour rechercher des noms de fichiers

Search Everything est l'un des plus petits moteurs de recherche pour Windows et est donc facile à récupérer et à exécuter, il possède une interface utilisateur très propre et simple vous permettant d'indexer très rapidement les fichiers et de rechercher parmi eux. Il a une utilisation minimale des ressources et effectue une mise à jour en temps réel si vous le maintenez ouvert, il peut donc même remplacer la recherche Windows si vous le souhaitez ...

J'ai un total de 904 108 fichiers et dossiers, ce qui est beaucoup par rapport à l'utilisateur habituel, et quand je tape quelque chose comme Super Userça, ça s'affiche instantanément . L'indexation ne prend pas longtemps non plus; il suffit donc de l'ouvrir en attendant quelques secondes et d'avoir une recherche instantanée au bout de vos doigts.

Par exemple, vous pouvez afficher tous les exécutables dans un dossier comme celui-ci: *.exe "C:\Program Files"

Tamara Wijsman
la source
Bien que Search Everything soit merveilleux quand cela fonctionne, il ne fait pas de recherches de texte comme l'exige l'affiche. Il a également une limite intégrée de plus d'un million sur le nombre de fichiers sur le disque qu'il peut gérer, au-delà duquel il devient inutilisable, et à moins qu'il ne fonctionne avec Windows, l'initialisation de sa base de données de recherche peut prendre un certain temps. Lors de mon contact avec le développeur concernant ces problèmes, il a indiqué que le développement s'était arrêté mais qu'il n'avait pas l'intention de le rendre open source.
harrymc
Vous avez exécuté Search Everything sur notre serveur de fichiers 64 bits et cela fonctionne toujours, où est la limite exacte dont vous parlez? Windows Grep semble être un sauveur? Faut-il parler d'exhaustivité par rapport à des hypothèses aléatoires? Vous semblez ne pas être complet mène à une meilleure qualité? Vous pensez quoi de plus? Ce jeu de médecine auquel tu essaies de jouer? Ennuyeux, hein? Qualité> Quantité .
Tamara Wijsman
Peut-être devriez-vous également indiquer à l'affiche pourquoi l'utilisation de grep pour rechercher «.ini» n'est pas une bonne idée.
harrymc
@harrymc: Parce que nous recherchons du contenu ici, du contenu précieux ...
Tamara Wijsman
2
Merci pour votre conseil. Cependant, comme mentionné, je ne peux pas installer d'exécutables supplémentaires sur le serveur. "wsearch" ne semble pas être un service valide sur mon installation.
G-.