web-dev-qa-db-fra.com

Outils pour rechercher des chaînes dans des fichiers sans indexation

Je dois changer certaines chaînes de connexion dans une application extrêmement ancienne, et les programmeurs qui l'ont conçue ont pensé que ce serait une bonne idée de coller toute l'application avec des chaînes de connexion un peu partout.

La recherche de "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, non indexé? Il vous suffit de renvoyer une liste de fichiers contenant la chaîne souhaitée dans un dossier et ses sous-dossiers.

J'utilise Windows 2003 Server.

162
kitsune

Windows Grep le fait très bien.

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

60
RedFilter

Je suis fan de la boîte de dialogue Rechercher dans les fichiers dans Notepad ++ . Bonus : c'est gratuit.

enter image description here

348
BQ.

Il existe également un programme intégré à Windows appelé findstr.exe avec lequel vous pouvez effectuer une recherche dans des fichiers.

_>findstr /s "provider=sqloledb" *.cs
_
160
JohnnyFromBF

Agent Ransack en est un autre bon. C'est rapide, gratuit et comporte d'autres fonctionnalités intéressantes comme l'intégration de Shell.

Agent Ransack screenshot

40
snowdude

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. Il semble être assez rapide, maigre et c'est gratuit. Testé sur Windows 7, 8, 10 et Windows Server 2008 R2. Permet les expressions régulières.

Latest AstroGrep Screenshot

AstroGrep est un utilitaire de recherche de fichiers (grep) avec interface graphique 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 de "contexte" très agréable pour regarder le code source

Référence: AstroGrep

34
Anytoe

Je suis un grand fan de grepWin . C'est gratuit, léger et disponible à partir de l'explorateur Shell. J'aime ne pas avoir à chercher délibérément et à démarrer un programme pour chercher quelque chose. Je peux juste cliquer avec le bouton droit de la souris dans Explorer et l’afficher.

11
Dan Rigby

SeekFast est très pratique pour rechercher du texte dans des fichiers - fichiers texte, MS Word, Excel, OpenOffice et autres. Il a une version gratuite.

10
pamir_miren

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

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

VS2010 sur un disque dur normal, pas de SSD, met 1 minute pour rechercher un dossier de 20 Go avec 26k fichiers, code source et fichiers binaires mélangés. 15k fichiers sont recherchés - les autres sont probablement ignorés car ils sont des fichiers binaires. Les recherches suivantes dans le même dossier durent de l'ordre de quelques secondes (jusqu'à ce que des é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" ne semble en rien accélérer la recherche; il semble que les fichiers binaires soient toujours touchés (bogue?), Mais ils ne figurent pas dans les résultats de la recherche. Les recherches suivantes prennent toutes les mêmes 3 minutes - vous ne pouvez pas tirer parti du cache du disque dur. Si je me limite aux fichiers de moins de 200 Ko, la recherche initiale est de 2,5 minutes et les recherches suivantes sont de l’ordre de quelques secondes, à peu près aussi vite que VS - dans le cache.

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

UPDATE: Agent Ransack peut être configuré pour rechercher des fichiers de certaines tailles. En utilisant le seuil <200 Ko, il faut 1: 15 min pour une nouvelle recherche et 5 secondes pour les recherches suivantes. Plus rapide que grepWin et aussi rapide que VS en général. En fait, c’est plutôt agréable si vous souhaitez conserver plusieurs recherches dans les onglets, si vous ne souhaitez pas polluer la liste des dossiers récemment recherchés par le VS, et si vous souhaitez conserver la possibilité de rechercher des fichiers binaires, ce que VS ne semble pas vouloir faire. Agent Ransack crée également une entrée de menu contextuel de l'explorateur, ce qui facilite son lancement à partir d'un dossier. Identique à grepWin mais avec 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!).

9
Steve

FileSeek . C'est rapide et c'est gratuit. Il peut trouver des chaînes de texte ou correspondre à des expressions régulières.

9
Jon Tackabury

TextPad est vraiment bon pour ce genre de chose. Vous pouvez l'utiliser gratuitement, mais vous recevez un message d'avertissement vous demandant de l'acheter. En dehors de cela, c'est un excellent outil.

4
Simon

Vous pouvez installer cygwin (prend un peu de temps) et utiliser grep -R.

2
Ruben

Si vous ne souhaitez pas installer d'outils non-Microsoft, veuillez télécharger STRINGS.EXE à partir de Microsoft Sysinternals et créer une procédure semblable à 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
2
FIBA

FileSearchy . C'est rapide et gratuit. Il a l'indexation, mais seulement pour les noms de fichiers et non pour le contenu.

1
lightstep

J'ai tendance à toujours utiliser grep ou trouver de nxutils . Cela fonctionne très bien sur ms-windows.

1
Jonke

Je recommanderais GOW au-dessus de cygwin, car il est beaucoup plus léger, mais inclut toujours grep ainsi que quelque 130 autres * environ utilitaires de ligne de commande dans 18 Mo au lieu de> 100 Mo.

1
TechSpud

Si vous cherchez un utilitaire basé sur la console pour le faire, vous pouvez vous référer à cette URL et en créer un pour vous-même.

http://www.dotnetlogic.net/articles/search-for-filename-or-text-inside-other-files-in-directory-using-c/

ce qui fait est de trouver la liste du texte de recherche dans le dossier et de retourner le fichier correspondant au même nom, qui est également retourné si un fichier contient également le texte

1
Pankaj Singh

Je peux recommander ack - un programme en ligne de commande avec les racines linux, qui fonctionne heureusement très bien aussi sous Windows. C'est plus rapide que grep, il ignore les répertoires git/Subversion et les fichiers binaires, et le résultat est plus compréhensible. Et taper ack est 25% plus rapide que grep;)

http://beyondgrep.com/

Je l'ai essayé sur babun (cygwin) et msys de git - fonctionne à merveille. Il est écrit en Perl et devrait donc également fonctionner dans cmd.exe avec Perl installé quelque part sur le système d'exploitation.

Pour Windows, vous pouvez essayer "Seekfast", tout se fait automatiquement. Ici https://seekfast.org lien sécurisé.

0
Koshmaar