Risposte:
(Sono ancora un fan di PowerGREP , ma non lo uso più.)
So che l'hai già menzionato, ma PowerGREP è fantastico .
Alcune delle mie funzioni preferite sono:
Ora mi rendo conto che gli altri strumenti grep possono fare tutto quanto sopra. È solo che PowerGREP racchiude tutte le funzionalità in una GUI molto facile da usare.
Dalle stesse meravigliose persone che ti hanno portato RegexBuddy e con cui non ho affiliazioni oltre ad amare le loro cose. (Va notato che RegexBuddy include una versione base di grep (per Windows) e costa molto meno di PowerGREP.)
FINDSTR è abbastanza potente, supporta espressioni regolari e ha i vantaggi di essere già su tutti i computer Windows.
c:\> FindStr /?
Searches for strings in files.
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 occurances 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
Esempio di utilizzo: findstr text_to_find *
o per cercare ricorsivamentefindstr /s text_to_find *
GrepWin gratuito e open source (GPL)
Sto usando grepWin che è stato scritto da uno dei ragazzi di tartaruga. Fa il lavoro su Windows ...
Aggiornamento luglio 2013:
Un altro strumento grep che ora uso sempre su Windows è AstroGrep :
La sua capacità di mostrarmi più della semplice ricerca di riga (ovvero il --context = NUM di un grep da riga di comando) è preziosa.
Ed è veloce. Molto veloce, anche su un vecchio computer con non- SSD unità (lo so, hanno usato per fare questo disco rigido con filatura dischi, chiamati piatti , a destra pazzo?)
È gratis.
È portatile (semplice archivio zip per decomprimerlo).
Risposta originale ottobre 2008
Gnu Grep sta bene
Puoi scaricarlo ad esempio qui: ( sito ftp )
Tutte le solite opzioni sono qui.
Questo, combinato con gawk e xargs (include 'find', da GnuWin32 ), e puoi davvero scrivere come se fossi su Unix!
Vedi anche le opzioni che sto usando per grep ricorsivamente :
grep --include "*.xxx" -nRHI "my Text to grep" *
Il cmdlet Select-String di PowerShell andava bene nella versione 1.0, ma è significativamente migliore per la versione 2.0 . Avere PowerShell integrato nelle versioni recenti di Windows significa che le tue abilità qui saranno sempre utili, senza prima installare qualcosa.
Nuovi parametri aggiunti a Select-String : il cmdlet Select-String ora supporta nuovi parametri, come:
- -Contesto: questo ti permette di vedere le linee prima e dopo la linea di corrispondenza
- -AllMatches: che ti permette di vedere tutte le partite in una linea (in precedenza, potevi vedere solo la prima partita in una linea)
- -NotMatch: equivalente a grep -vo
- -Codifica: per specificare la codifica dei caratteri
Trovo opportuno creare una funzione gcir
per Get-ChildItem -Recurse .
, con intelligenza per passare correttamente i parametri e un alias ss
per Select-String
. Quindi scrivi:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
per Select-String
davvero troppo tempo?
Potrebbe non rientrare esattamente nella categoria 'grep', ma non potrei cavarmela su Windows senza un'utilità chiamata AgentRansack . È un'utilità "trova nei file" basata su gui con supporto regex. È semplicissimo fare clic con il tasto destro del mouse su una cartella, premere "saccheggia .." e trovare i file che contengono ciò che stai cercando. Anche estremamente veloce.
Sono passati un paio d'anni da quando hai posto la domanda, ma consiglierei AstroGrep ( http://astrogrep.sourceforge.net ).
È gratuito, open source e ha un'interfaccia semplice. Lo uso per cercare continuamente il codice.
PowerShell è stato menzionato alcune volte. Ecco come lo useresti effettivamente in modo grigiastro:
Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"
Cerca ricorsivamente tutti i file di testo nella struttura di directory corrente SomeString
con la distinzione tra maiuscole e minuscole.
Ancora meglio, esegui questo:
function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }
Quindi fa:
pgrep SomeStringToSearch *.txt
Quindi, per renderlo davvero magico, aggiungi l'alias di funzione al tuo profilo PowerShell e puoi quasi attenuare il dolore di non avere gli strumenti della riga di comando adeguati.
Cygwin include grep. Tutti gli strumenti GNU e le cose Unix funzionano perfettamente su Windows se installi Cygwin.
Git su Windows = grep in cmd.exe
Ho appena scoperto che l'installazione di Git ti darà alcuni comandi di base di Linux: cat, grep, scp e tutti gli altri buoni.
Installa quindi aggiungi la cartella bin Git al tuo PATH e quindi il tuo cmd.exe ha funzionalità Linux di base!
dnGREP è uno strumento grep open source per Windows. Supporta una serie di funzioni interessanti tra cui:
IMHO, ha anche un'interfaccia bella e pulita :)
Uso sempre WinGREP , ma ho avuto problemi a non lasciare andare i file.
Bene, oltre alla porta di Windows del GNU grep su:
http://gnuwin32.sourceforge.net/
c'è anche grep di Borland (molto simile a quello GNU) disponibile nel compilatore Free C ++ gratuito di Borland (è un freeware con strumenti da riga di comando).
Ho usato con successo i programmi di utilità GNU per Win32 da un po 'di tempo e ha un buon grep, nonché tail e altri utili programmi di utilità gnu per win32. Evito la shell in pacchetto e uso semplicemente gli eseguibili nel prompt dei comandi di win32.
Anche la coda confezionata è una buona applicazione.
Sono l'autore di Aba Search and Replace. Proprio come PowerGREP, supporta espressioni regolari, salvataggio di schemi per un ulteriore utilizzo, annullamento per sostituzioni, anteprima con evidenziazione della sintassi per HTML / CSS / JS / PHP, codifiche diverse, tra cui UTF-8 e UTF-16.
In confronto a PowerGREP, la GUI è meno ingombra. Aba inizia immediatamente la ricerca mentre digiti il modello (ricerca incrementale), in modo da poter sperimentare espressioni regolari e vedere immediatamente i risultati.
Sei il benvenuto a provare il mio strumento; Sarò felice di rispondere a qualsiasi domanda.
Volevo uno strumento grep gratuito per Windows che ti permettesse di fare clic con il tasto destro su una cartella e fare una ricerca regex di ogni file, senza alcuna schermata di nag.
Quella che segue è una soluzione rapida basata su quella findstr
menzionata in un post precedente.
Crea un file di testo da qualche parte sul tuo disco rigido dove mantieni strumenti di lunga durata. Rinomina in .bat o .cmd e incolla quanto segue:
@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"
Quindi passare alla cartella SendTo. Su Windows 7, selezionare %APPDATA%\Microsoft\Windows\SendTo
e trascinare un collegamento del file batch nella cartella SendTo.
Ho rinominato il collegamento per 1 GREP
tenerlo in cima all'elenco SendTo.
Le cose che mi piacerebbe fare successivamente con questo sono il pipe dell'output findstr
attraverso qualcosa che genererebbe un file html in modo da poter fare clic su ciascuna riga di output per aprire quel file. Inoltre, non penso che funzioni con le scorciatoie per le cartelle. Dovrei ispezionare il parametro e vedere se contiene ".lnk".
Ho usato il grep di Borland per anni, ma ho appena trovato uno schema che non corrisponde. Eeeks. Cos'altro non ha trovato negli anni? Ho scritto una semplice sostituzione di ricerca di testo che fa ricorsione come grep - è FS.EXE sulla forge di origine.
grep fallisce ...
C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>
windows findstr funziona ...
C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG: AADD(mPRINTER, TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG: IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG: REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]
Il mio strumento preferito è il nome appropriato di Windows Grep :
La stringa di selezione di PowerShell è simile, non ha le stesse opzioni e la semantica, ma è comunque potente.
Se vuoi un semplice strumento Windows Grep, ne ho creato uno chiamato P-Grep che ho reso disponibile per il download gratuito dal mio sito Web: www.adjutantit.com - menu principale, download.
Windows Grep sembrava avere problemi con un gran numero di file, quindi ho scritto il mio, che sembra più affidabile. È possibile selezionare una cartella, fare clic con il tasto destro e inviarlo a P-Grep. La cartella sendto non viene aggiornata durante l'installazione.
Uso AJC Grep ogni giorno da anni. L'unica grande limitazione che ho riscontrato è che i percorsi dei file sono limitati a 255 caratteri e si interrompe quando ne incontra uno, piuttosto che emettere un avviso. È fastidioso ma non succede molto spesso.
Lo uso su Windows 7 Ultimate a 64 bit, quindi le sue credenziali a 64 bit vanno bene.
Lo uso da sempre e per fortuna è ancora disponibile. È super veloce e molto piccolo.
Se nessuna delle soluzioni è esattamente ciò che stai cercando, forse potresti scrivere un wrapper su FindStr che fa esattamente quello che ti serve?
FindStr è comunque abbastanza buono, quindi dovrebbe semplicemente rovesciare una GUI (se lo desideri) e fornire alcune funzionalità extra (come combinarlo con Trova per trovare il conteggio dei file che contengono una stringa specificata [menzionata sopra]).
Questo, ovviamente, presuppone che tu abbia il requisito, il tempo e la propensione per farlo!
Ho installato Cygwin sulla mia macchina e ho inserito la directory bin di Cygwin nel mio percorso ambientale, quindi il grep di Cygwin funziona come al solito in una riga di comando che al momento risolve tutte le mie esigenze di scripting per grep.