Outils pour rechercher des chaînes dans des fichiers sans indexation [fermé]

170

Je dois changer certaines chaînes de connexion dans une application héritée incroyablement ancienne, et les programmeurs qui l'ont créée ont pensé que ce serait une bonne idée de plâtrer toute l'application avec des chaînes de connexion partout.

La recherche "projet actuel" de Visual Studio est incroyablement lente et je ne fais pas confiance à Windows Search.

Alors, quel est le meilleur outil de recherche de texte gratuit et non indexé? Tout ce qu'il doit faire est de renvoyer une liste avec les fichiers contenant la chaîne souhaitée dans un dossier et ses sous-dossiers.

J'utilise Windows 2003 Server.

kitsune
la source
010 Editorrecherche des fichiers huuuge en 0 seconde.
Morteza Ziyae
Depeche View bat tout le reste sur cette page, haut la main. Il y a quelques raccourcis que vous voudrez prendre quelques minutes pour lire le fichier d'aide et apprendre. stahlworks.com/dev/depeche-view.html
BVernon
J'utilise beaucoup cela aussi, mais cela vous oblige à cliquer sur chaque fichier de résultat pour voir les correspondances de contenu dans le volet de droite. De plus, le contenu du fichier dans le volet droit ne peut pas être zoomé (la taille de la police est trop petite).
Meryan
C'est une bonne question pour le génie logiciel, mais hors sujet sur SO. Quel site du réseau SE est-il sur le sujet? Voir par exemple les questions SE.SE sur 'search codebase'. Nous devrions migrer cette question pour qu'elle puisse être rouverte!
smci
1
Jetez un œil à File Content Finder sur l'App Store (clause de non-responsabilité - je suis le développeur). Il peut rechercher dans des fichiers texte / source, mais aussi dans des fichiers pdf, doc (x), xls (x) et même des fichiers jpg / png scannés - microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp
Geo Systems

Réponses:

60

Réponse originale

Windows Grep le fait très bien.

Edit: Windows Grep n'est plus maintenu ou mis à disposition par le développeur. Un lien de téléchargement alternatif est ici: Windows Grep - alternative

Réponse actuelle

Visual Studio Code a d'excellentes capacités de recherche et de remplacement dans les fichiers. Il est extrêmement rapide, prend en charge les regex et l'aperçu en direct avant le remplacement.

entrez la description de l'image ici

RedFilter
la source
10
ss64.com/nt/findstr.html
JohnnyFromBF
10
Sur ma machine (Windows 7), il s'est écrasé deux fois. J'essaierai autre chose.
B. Clay Shannon
2
C'est vieux, ça s'est écrasé pour moi aussi. Même s'il n'est pas parfait pour certains buts, grepWin est meilleur imoh
Paolo
9
AstroGrep est aussi rapide et c'est pas du tout
Zorb
A bien fonctionné pour moi sur Windows 7 - pas de plantages
w5m
364

Je suis fan de la boîte de dialogue Find-In-Files dans Notepad ++ . Bonus : c'est gratuit.

entrez la description de l'image ici

BQ.
la source
Ce qui malheureusement ne peut pas - ou pas - rechercher tous les fichiers Microsoft Word. Quelque chose à propos de la différence entre ".doc" et ".docm" je soupçonne
Carl Witthoft
11
@CarlWitthoft .docm, comme .docx, .xlsmet .xlsxsont en fait des documents XML compressés .
Ian Boyd
1
cela fonctionne bien pour les petits dossiers avec un nombre normal de fichiers, se bloque pour les grands dossiers avec de nombreux fichiers, du moins lorsque j'utilise mon ordinateur portable. Un peu plus rapide avec un PC puissant. De plus, pendant la recherche, ne peut ouvrir aucun autre fichier.
Mohammed Joraid
J'ai trouvé mon texte. Cependant, ne m'a pas permis de sélectionner dans les résultats les valeurs à remplacer et celles à conserver. Tout ou rien?
ofer.sheffer
5
Je n'avais aucune idée que c'était même une option dans notepad ++. Excellente solution pour trouver les fichiers manquants! Il semble cependant avoir des problèmes avec des fichiers de grande taille. Parfois, cela donne l'erreur «fichier trop volumineux pour être ouvert».
John août
167

Il existe également un programme intégré Windows appelé findstr.exeavec lequel vous pouvez rechercher dans les fichiers.

>findstr /s "provider=sqloledb" *.cs
JohnnyFromBF
la source
3
Simple et efficace!
Markus Fantone
C'est beaucoup plus rapide que l'Explorateur Windows et a effectivement trouvé le texte que je recherchais, alors que l'utilisation de l'Explorateur Windows n'a pas donné de résultats de recherche pour moi. Merci.
mbomb007
1
Pour moi, la meilleure réponse sur ce sujet car vous n'avez rien à installer. Dans mon cas, j'ai dû compléter l'ajout de quelques arguments car il y a trop d'informations pour apparaître à l'écran. L'argument / M liste uniquement le nom du fichier contenant les informations que je recherchais. Pour accéder au manuel de la commande findstr, tapez "findstr /?" dans la console.
Alexandre Ribeiro
C'est un excellent utilitaire, mais il semble qu'il ne puisse pas lire les caractères cyrilliques dans les noms de fichiers. Par exemple:FINDSTR: Cannot open ???????????.txt
Artem Russakovskii
1
findstr ne prend pas en charge le texte UTF16.
David Bremner
34

J'aime AstroGrep. Les résultats sont affichés dans une liste. Un clic sur une ligne vous montre la ligne entière comme un aperçu mettant en évidence le hit. Cela semble être assez rapide, léger et gratuit. Testé sur Windows 7, 8, 10 et Windows Server 2008 R2. Autorise les expressions régulières.

Dernière capture d'écran d'AstroGrep

AstroGrep est un utilitaire de recherche de fichiers (grep) GUI de Microsoft Windows. Ses fonctionnalités incluent des expressions régulières, des options d'impression polyvalentes, stocke les chemins les plus récents et dispose d'une fonction "context" qui est très agréable pour regarder le code source

Référence: AstroGrep

Anytoe
la source
7
Sur tous les autres listés ici, c'est le seul qui permet de spécifier des modèles d'exclusion pour les dossiers. Très utile lorsque vous essayez de sauter des dossiers comme node_modulesou bower_components.
Mrchief
1
Très bon logiciel, rapide, configurable et affiche les fichiers avec le contexte associé
HanniBaL90
1
Et `` rapide '' mérite une deuxième mention ...self == happy
cssyphus
9

La recherche de Visual Studio dans les dossiers est de loin la plus rapide que j'ai trouvée.

Je pense qu'il recherche intelligemment uniquement les fichiers texte (non binaires), et les recherches ultérieures dans le même dossier sont extrêmement rapides, contrairement aux autres outils (les fichiers texte tiennent probablement dans le cache disque de Windows).

VS2010 sur un disque dur ordinaire, sans SSD, prend 1 minute pour rechercher un dossier de 20 Go avec 26k fichiers, code source et binaires mélangés. 15k fichiers sont recherchés - le reste est probablement ignoré car il s'agit de fichiers binaires. Les recherches suivantes dans le même dossier sont de l'ordre de quelques secondes (jusqu'à ce que les éléments soient expulsés du cache).

Le prochain plus proche que j'ai trouvé pour le même dossier était grepWin. Environ 3 minutes. J'ai exclu les fichiers de plus de 2000 Ko (par défaut). Le paramètre "Inclure les fichiers binaires" semble ne rien faire pour accélérer la recherche, il semble que les fichiers binaires soient toujours touchés (bug?), Mais ils n'apparaissent pas dans les résultats de la recherche. Les recherches suivantes prennent toutes les mêmes 3 minutes - ne peuvent pas profiter du cache du disque dur. Si je me limite aux fichiers inférieurs à 200k, la recherche initiale est de 2,5 minutes et les recherches suivantes sont de l'ordre de quelques secondes, à peu près aussi rapides que VS - dans le cache.

Agent Ransack et FileSeek sont tous deux très lents sur ce dossier, environ 20 minutes, en raison de la recherche dans tout, y compris les fichiers binaires géants de plusieurs gigaoctets. Ils recherchent à environ 10-20 Mo par seconde selon Resource Monitor.

MISE À JOUR: Agent Ransack peut être configuré pour rechercher des fichiers de certaines tailles, et en utilisant le seuil <200 Ko, il est de 1: 15min pour une nouvelle recherche et 5s pour les recherches suivantes. Plus rapide que grepWin et aussi rapide que VS globalement. C'est en fait plutôt bien si vous souhaitez conserver plusieurs recherches dans des onglets et que vous ne voulez pas polluer la liste des dossiers récemment recherchés par VS, et que vous souhaitez conserver la possibilité de rechercher des binaires, ce que VS ne semble pas vouloir faire. Agent Ransack crée également une entrée de menu contextuel de l'explorateur, il est donc facile de le lancer à partir d'un dossier. Identique à grepWin mais une interface utilisateur plus agréable et plus rapide.

Ma nouvelle configuration de recherche est Agent Ransack pour le contenu et Tout pour les noms de fichiers (outil génial, résultats instantanés!).

Steve
la source
3

Si vous ne souhaitez pas installer d'outils non-Microsoft, téléchargez STRINGS.EXE à partir de Microsoft Sysinternals et effectuez une procédure comme celle-ci:

@echo off
if '%1' == '' goto NOPARAM
if '%2' == '' goto NOPARAM
if not exist %1 goto NOFOLDER

echo ------------------------------------------
echo - %1 : folder
echo - %2 : string to be searched in the folder
echo - PLEASE WAIT FOR THE RESULTS ...
strings -s %1\* | findstr /i %2 > grep.txt
notepad.exe grep.txt

goto END

:NOPARAM rem - input command not correct
echo ====================================
echo Usage of GREP.CMD:
echo   Grep "SearchFolder" SearchString
echo Please specify all parameters
echo ====================================
goto END

:NOFOLDER
echo Folder %1 does not exist
goto END

:END rem - exit
FIBA
la source