web-dev-qa-db-de.com

Tools zum Suchen nach Zeichenfolgen in Dateien ohne Indizierung

Ich muss einige Verbindungszeichenfolgen in einer unglaublich alten Legacy-Anwendung ändern, und die Programmierer, die dies vorgenommen haben, hielten es für eine großartige Idee, die gesamte App mit Verbindungszeichenfolgen überall zu versehen.

Die Suche nach "aktuellen Projekten" in Visual Studio ist unglaublich langsam, und ich vertraue Windows Search nicht.

Also, was ist das beste freie, nicht indizierte Textsuchwerkzeug da draußen? Es muss lediglich eine Liste mit Dateien zurückgegeben werden, die die gewünschte Zeichenfolge in einem Ordner und dessen Unterordnern enthalten.

Ich verwende Windows 2003 Server.

162
kitsune

Windows Grep macht das wirklich gut.

Bearbeiten: Windows Grep wird vom Entwickler nicht mehr gewartet oder zur Verfügung gestellt. Ein alternativer Download-Link ist hier: Windows Grep - alternate

60
RedFilter

Ich bin ein Fan des Dialogfelds "In Dateien suchen" in Notepad ++ . Bonus: Es ist kostenlos.

enter image description here

348
BQ.

Es gibt auch ein in Windows integriertes Programm namens findstr.exe mit dem Sie in Dateien suchen können.

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

Agent Ransack ist ein weiterer guter. Es ist schnell, kostenlos und hat einige andere nette Funktionen wie die Shell-Integration.

Agent Ransack screenshot

40
snowdude

Ich mag AstroGrep. Die Ergebnisse werden in einer Liste angezeigt. Ein Klick auf eine Zeile zeigt Ihnen die gesamte Zeile als Vorschau und hebt den Treffer hervor. Es scheint ziemlich schnell zu sein, schlank und es ist kostenlos. Getestet unter Windows 7, 8, 10 und Windows Server 2008 R2. Ermöglicht reguläre Ausdrücke.

Latest AstroGrep Screenshot

AstroGrep ist ein Dienstprogramm für die Microsoft Windows-GUI-Dateisuche (grep). Zu den Funktionen gehören reguläre Ausdrücke, vielseitige Druckoptionen, das Speichern der zuletzt verwendeten Pfade und eine "Kontext" -Funktion, die sich hervorragend zum Betrachten von Quellcode eignet

Referenz: AstroGrep

34
Anytoe

Ich bin ein großer Fan von grepWin . Es ist kostenlos, leicht und in der Explorer-Shell erhältlich. Ich möchte nicht absichtlich ein Programm suchen und starten müssen, um nach etwas zu suchen. Ich kann einfach mit der rechten Maustaste in den Explorer klicken und es aufrufen.

11
Dan Rigby

SeekFast ist sehr praktisch, um Text in Dateien zu suchen - Textdateien, MS Word, Excel, OpenOffice und andere. Es hat eine kostenlose Version.

10
pamir_miren

Die Suche in Ordnern von Visual Studio ist mit Abstand die schnellste, die ich gefunden habe.

Ich glaube, es durchsucht intelligent nur Textdateien (nicht-binäre Dateien) und nachfolgende Suchen im selben Ordner sind im Gegensatz zu den anderen Tools extrem schnell (wahrscheinlich passen die Textdateien in den Windows-Festplatten-Cache).

VS2010 auf einer normalen Festplatte, ohne SSD, benötigt 1 Minute, um einen Ordner mit 20 GB zu durchsuchen, in dem 26.000 Dateien, Quellcode und Binärdateien verwechselt sind. Es werden 15.000 Dateien durchsucht - der Rest wird wahrscheinlich übersprungen, weil es sich um Binärdateien handelt. Nachfolgende Suchvorgänge in demselben Ordner erfolgen in der Größenordnung von Sekunden (bis die Daten aus dem Cache entfernt werden).

Der nächstnächste, den ich für denselben Ordner gefunden habe, war grepWin. Ca. 3 Minuten. Ich habe Dateien mit einer Größe von mehr als 2000 KB (Standardeinstellung) ausgeschlossen. Die Einstellung "Binärdateien einbeziehen" scheint die Suche nicht zu beschleunigen. Es sieht so aus, als wären Binärdateien immer noch betroffen (Fehler?), Sie werden jedoch nicht in den Suchergebnissen angezeigt. Nachfolgende Suchvorgänge dauern alle 3 Minuten. Der Festplatten-Cache kann nicht genutzt werden. Wenn ich mich auf Dateien beschränke, die kleiner als 200 KB sind, beträgt die anfängliche Suche 2,5 Minuten, und nachfolgende Suchen sind in der Größenordnung von Sekunden, ungefähr so ​​schnell wie VS - im Cache.

Agent Ransack und FileSeek sind beide in diesem Ordner sehr langsam (etwa 20 Minuten), da sie alles durchsuchen, einschließlich riesiger Multigigabyte-Binärdateien. Sie suchen laut Ressourcenmonitor mit etwa 10-20 MB pro Sekunde.

UPDATE: Agent Ransack kann so eingestellt werden, dass Dateien bestimmter Größe durchsucht werden. Bei Verwendung des <200-KB-Grenzwerts sind es 1: 15 Minuten für eine erneute Suche und 5 Sekunden für nachfolgende Suchen. Schneller als grepWin und so schnell wie VS insgesamt. Eigentlich ist es ganz nett, wenn Sie mehrere Suchvorgänge in Registerkarten durchführen und die Liste der kürzlich durchsuchten Ordner von VS nicht verschmutzen möchten und weiterhin nach Binärdateien suchen möchten, was von VS anscheinend nicht gewünscht wird. Agent Ransack erstellt auch einen Explorer-Kontextmenüeintrag, sodass der Start von einem Ordner aus einfach ist. Wie grepWin, aber schöner und schneller.

Mein neues Such-Setup ist Agent Ransack für Inhalte und Everything für Dateinamen (tolles Tool, sofortige Ergebnisse!).

9
Steve

FileSeek . Es ist schnell und kostenlos. Es kann Textzeichenfolgen finden oder regulären Ausdrücken entsprechen.

9
Jon Tackabury

TextPad ist wirklich gut für so etwas. Sie können es kostenlos verwenden, erhalten jedoch eine Warnmeldung, in der Sie aufgefordert werden, es zu kaufen. Davon abgesehen ist es ein hervorragendes Werkzeug.

4
Simon

Sie können cygwin installieren (dauert einige Zeit) und grep -R verwenden.

2
Ruben

Wenn Sie keine Nicht-Microsoft-Tools installieren möchten, STRINGS.EXE herunterladen von Microsoft Sysinternals und folgendermaßen vorgehen:

@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 . Es ist schnell und kostenlos. Es gibt eine Indizierung, jedoch nur für Dateinamen und nicht für Inhalte.

1
lightstep

Ich benutze immer grep oder find from nxutils . Dies funktioniert hervorragend unter MS-Windows.

1
Jonke

Ich empfehle GOW über cygwin, da es viel leichter ist, aber trotzdem grep sowie weitere ca. 130 * nix-Befehlszeilen-Utils in 18 MB enthält von> 100MB.

1
TechSpud

Wenn Sie dazu ein konsolenbasiertes Dienstprogramm suchen, können Sie auf diese URL verweisen und eine eigene URL erstellen.

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

das heißt, Sie finden die Liste des Suchtextes in einem Ordner und geben eine Datei mit demselben Namen zurück, die auch zurückgegeben wird, wenn eine Datei auch den Text enthält

1
Pankaj Singh

Ich kann ack - ein Kommandozeilenprogramm mit Linux-Wurzeln empfehlen, das zum Glück auch unter Windows funktioniert. Es ist schneller als grep, es ignoriert git/Subversion-Verzeichnisse und Binärdateien und die Ausgabe ist verständlicher. Und das Tippen von ack ist 25% schneller als grep;)

http://beyondgrep.com/

Ich habe es auf babun (cygwin) und msys von git ausprobiert - funktioniert fabelhaft. Es ist in Perl geschrieben, sollte also auch in cmd.exe funktionieren, wenn Perl irgendwo auf dem Betriebssystem installiert ist.

Für Windows können Sie "Seekfast" versuchen, es erledigt alles automatisch. Hier https://seekfast.org sicherer Link.

0
Koshmaar