Strumenti per cercare stringhe all'interno di file senza indicizzazione [chiuso]


170

Devo cambiare alcune stringhe di connessione in un'applicazione legacy incredibilmente vecchia, ei programmatori che l'hanno pensato hanno pensato che sarebbe stata una buona idea intonacare l'intera app con stringhe di connessione ovunque.

La ricerca "progetto corrente" di Visual Studio è incredibilmente lenta e non mi fido di Ricerca di Windows.

Quindi, qual è il miglior strumento di ricerca di testo libero e non indicizzato là fuori? Tutto ciò che dovrebbe fare è restituire un elenco con file che contengono la stringa desiderata all'interno di una cartella e delle sue sottocartelle.

Sto eseguendo Windows 2003 Server.


010 Editorcerca i file huuuge in 0 secondi.
Morteza Ziyae,

Depeche View batte tutto il resto in questa pagina, senza dubbio. Ci sono alcune scorciatoie che vorresti prendere un paio di minuti per leggere il file di aiuto e imparare però. stahlworks.com/dev/depeche-view.html
BVernon,

Anch'io lo uso molto, tuttavia ti costringe a fare clic su ciascun file dei risultati per vedere le corrispondenze del contenuto nel riquadro a destra. Inoltre, il contenuto del file nel riquadro destro non è zoomabile (la dimensione del carattere è troppo piccola).
Meryan,

Questa è una buona domanda per l'ingegneria del software, ma offtopic su SO. Quale sito della rete SE è in argomento? Vedi ad esempio le domande SE.SE su "search codebase" Dovremmo migrare questa domanda in modo che possa essere riaperta!
smci,

1
Dai un'occhiata a File Content Finder su app store (dichiarazione di non responsabilità - sono lo sviluppatore). Può cercare in file di testo / sorgente, ma anche in file pdf, doc (x), xls (x) e persino scansionati jpg / png - microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp
Geo Systems,

Risposte:


60

Risposta originale

Windows Grep lo fa davvero bene.

Modifica: Windows Grep non viene più gestito o reso disponibile dallo sviluppatore. Un link per il download alternativo è qui: Windows Grep - alternate

Risposta attuale

Visual Studio Code offre eccellenti funzionalità di ricerca e sostituzione tra i file. È estremamente veloce, supporta regex e l'anteprima dal vivo prima della sostituzione.

inserisci qui la descrizione dell'immagine



10
Sul mio computer (Windows 7), si è bloccato due volte. Proverò qualcos'altro.
B. Clay Shannon,

2
È vecchio, si è schiantato anche per me. Anche se non è perfetto per alcuni goal, grepWin è meglio imoh
Paolo,

9
Anche AstroGrep è veloce ed è senza istall
Zorb il

Ha funzionato bene per me su Windows 7 - nessun arresto
anomalo

364

Sono un fan della finestra di dialogo Trova nei file di Notepad ++ . Bonus : è gratuito.

inserisci qui la descrizione dell'immagine


Che sfortunatamente non può - o non è - cercare tutti i file di Microsoft Word. Qualcosa sulla differenza tra ".doc" e ".docm" sospetto
Carl Witthoft,

11
@CarlWitthoft .docm, come .docx, .xlsme in .xlsxrealtà sono documenti XML compressi.
Ian Boyd,

1
funziona bene per le cartelle di piccole dimensioni con un numero normale di file, si blocca per grandi dimensioni con molte cartelle di file, almeno quando uso il mio laptop. Un po 'più veloce quando si utilizza un PC potente. Inoltre, durante la ricerca, non è possibile aprire altri file.
Mohammed Joraid,

Ho trovato il mio testo. Tuttavia, non mi ha permesso di selezionare nei risultati quali valori sostituire e quali mantenere. Tutto o niente?
ofer.sheffer

5
Non avevo idea che fosse anche un'opzione in notepad ++. Ottima soluzione per trovare file mancanti! Tuttavia, sembra avere problemi con file di grandi dimensioni. Occasionalmente dà l'errore "file troppo grande per aprirsi".
Giovanni, agosto

167

Esiste anche un programma integrato di Windows chiamato findstr.execon il quale è possibile effettuare ricerche all'interno dei file.

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

3
Semplice ed efficiente!
Markus Fantone,

Questo è molto più veloce di Windows Explorer e in realtà ha trovato il testo che stavo cercando, mentre l'uso di Windows Explorer non ha prodotto risultati di ricerca per me. Grazie.
mbomb007,

1
Per me, la migliore risposta su questo argomento perché non è necessario installare nulla. Nel mio caso ho dovuto completare l'aggiunta di alcuni argomenti perché ci sono troppe informazioni per apparire sullo schermo. L'argomento / M elenca solo il nome del file che contiene le informazioni che stavo cercando. Per accedere al manuale del comando findstr, digitare "findstr /?" nella console.
Alexandre Ribeiro,

Questo è un grande util, ma sembra che non riesca a leggere i caratteri cirillici nei nomi dei file. Ad esempio:FINDSTR: Cannot open ???????????.txt
Artem Russakovskii,

1
findstr non supporta il testo UTF16.
David Bremner,

34

Mi piace AstroGrep. I risultati sono mostrati in un elenco. Un clic su una riga mostra l'intera riga come anteprima che evidenzia l'hit. Sembra essere abbastanza veloce, snello ed è gratuito. Testato su Windows 7, 8, 10 e Windows Server 2008 R2. Permette espressioni regolari.

Schermata più recente di AstroGrep

AstroGrep è un'utilità di ricerca dei file della GUI di Microsoft Windows (grep). Le sue caratteristiche includono espressioni regolari, opzioni di stampa versatili, memorizza i percorsi usati più recenti e ha una funzione di "contesto" che è molto piacevole per guardare il codice sorgente

Riferimento: AstroGrep


7
A parte tutti gli altri elencati qui, questo è l'unico che consente di specificare i modelli di esclusione per le cartelle. Molto utile quando si tenta di saltare cartelle come node_moduleso bower_components.
Mrchief,

1
Software molto buono, veloce, configurabile e mostra i file insieme al contesto correlato
HanniBaL90

1
E 'veloce' merita una seconda menzione ...self == happy
cssyphus,

9

La ricerca in Visual Studio nelle cartelle è di gran lunga la più veloce che abbia mai trovato.

Credo che cerchi in modo intelligente solo i file di testo (non binari) e che le ricerche successive nella stessa cartella siano estremamente veloci, a differenza degli altri strumenti (probabilmente i file di testo si adattano alla cache del disco di Windows).

VS2010 su un normale disco rigido, senza SSD, impiega 1 minuto per cercare una cartella da 20 GB con 26k file, codice sorgente e binari confusi. Vengono cercati 15.000 file: il resto è probabilmente ignorato a causa dei file binari. Le ricerche successive nella stessa cartella sono nell'ordine dei secondi (fino a quando le cose non vengono sfrattate dalla cache).

Il prossimo più vicino che ho trovato per la stessa cartella era grepWin. 3 minuti circa Ho escluso file di dimensioni superiori a 2000 KB (impostazione predefinita). L'impostazione "Includi file binari" sembra non fare nulla in termini di accelerazione della ricerca, sembra che i file binari siano ancora toccati (bug?), Ma non vengono visualizzati nei risultati di ricerca. Le ricerche successive richiedono tutti gli stessi 3 minuti: non è possibile sfruttare la cache del disco rigido. Se mi limito a file più piccoli di 200k, la ricerca iniziale è di 2,5 minuti e le ricerche successive sono nell'ordine dei secondi, circa quanto VS - nella cache.

Agent Ransack e FileSeek sono entrambi molto lenti in quella cartella, circa 20 minuti, a causa della ricerca in tutto, inclusi file binari giganteschi multi-gigabyte. Cercano a circa 10-20 MB al secondo secondo Resource Monitor.

AGGIORNAMENTO: Agent Ransack può essere impostato per la ricerca di file di determinate dimensioni e utilizzando il valore soglia <200 KB è 1: 15min per una nuova ricerca e 5 secondi per le ricerche successive. Più veloce di grepWin e più veloce di VS in generale. In realtà è abbastanza bello se vuoi mantenere diverse ricerche nelle schede e non vuoi inquinare l'elenco delle cartelle recentemente cercate in VS e vuoi mantenere la possibilità di cercare i binari, cosa che VS non sembra voler fare. Agent Ransack crea anche una voce del menu di scelta rapida di Explorer, quindi è facile avviarlo da una cartella. Come grepWin ma UI più bella e più veloce.

La mia nuova configurazione di ricerca è Agent Ransack per contenuti e Tutto per i nomi dei file (strumento fantastico, risultati immediati!).


3

Se non si desidera installare strumenti non Microsoft, scaricare STRINGS.EXE da Microsoft Sysinternals ed eseguire una procedura come questa:

@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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.