Réponses:
(Je suis toujours fan de PowerGREP , mais je ne l'utilise plus.)
Je sais que vous l'avez déjà mentionné, mais PowerGREP est génial .
Certaines de mes fonctionnalités préférées sont:
Maintenant, je me rends compte que les autres outils grep peuvent faire tout ce qui précède. C'est juste que PowerGREP regroupe toutes les fonctionnalités dans une interface graphique très facile à utiliser.
Des mêmes personnes merveilleuses qui vous ont amené RegexBuddy et avec qui je n'ai aucune affiliation au-delà de l'amour de leurs affaires. (Il convient de noter que RegexBuddy comprend une version de base de grep (pour Windows) elle-même et coûte beaucoup moins cher que PowerGREP.)
FINDSTR est assez puissant, prend en charge les expressions régulières et a déjà l'avantage d'être sur toutes les machines 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
Exemple d'utilisation: findstr text_to_find *
ou pour effectuer une recherche récursivefindstr /s text_to_find *
GrepWin Libre et open source (GPL)
J'ai utilisé grepWin qui a été écrit par l'un des gars de tortoisesvn. Est-ce que le travail sous Windows ...
Mise à jour de juillet 2013:
AstroGrep est un autre outil grep que j'utilise maintenant tout le temps sur Windows :
Sa capacité à me montrer plus que la simple recherche en ligne (c'est-à-dire le --context = NUM d'un grep en ligne de commande) est inestimable.
Et c'est rapide. Très rapide, même sur un vieil ordinateur avec un lecteur non SSD (je sais, ils faisaient ce disque dur avec des disques en rotation , appelés plateaux , c'est fou, non?)
Ce est gratuit.
Il est portable (archive zip simple à décompresser).
Réponse originale octobre 2008
Gnu Grep va bien
Vous pouvez le télécharger par exemple ici: ( site ftp )
Toutes les options habituelles sont ici.
Cela, combiné avec gawk et xargs (inclut 'find', de GnuWin32 ), et vous pouvez vraiment écrire un script comme si vous étiez sur Unix!
Voir aussi les options que j'utilise pour grep récursivement :
grep --include "*.xxx" -nRHI "my Text to grep" *
L'applet de commande Select-String de PowerShell était correcte dans la version 1.0, mais elle est nettement meilleure pour la version 2.0 . Avoir PowerShell intégré aux versions récentes de Windows signifie que vos compétences ici seront toujours utiles, sans installer d'abord quelque chose.
Nouveaux paramètres ajoutés à Select-String : l'applet de commande Select-String prend désormais en charge de nouveaux paramètres, tels que:
- -Contexte: Cela vous permet de voir les lignes avant et après la ligne de correspondance
- -AllMatches: qui vous permet de voir toutes les correspondances dans une ligne (Auparavant, vous ne pouviez voir que la première correspondance dans une ligne)
- -NotMatch: équivalent à grep -vo
- -Encoding: pour spécifier l'encodage des caractères
Je trouve opportun de créer une fonction gcir
pour Get-ChildItem -Recurse .
, avec smarts pour passer les paramètres correctement, et un alias ss
pour Select-String
. Alors vous écrivez:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
pour Select-String
vraiment trop longtemps?
Il ne tombe peut-être pas exactement dans la catégorie «grep», mais je ne pourrais pas m'en sortir sous Windows sans un utilitaire appelé AgentRansack . Il s'agit d'un utilitaire de recherche dans les fichiers basé sur une interface graphique avec un support regex. Il est très simple de cliquer avec le bouton droit sur un dossier, d'appuyer sur "saccager ..." et de trouver des fichiers contenant ce que vous recherchez. Extrêmement rapide aussi.
Cela fait quelques années que vous avez posé la question, mais je recommanderais AstroGrep ( http://astrogrep.sourceforge.net ).
C'est gratuit, open source et dispose d'une interface simple. Je l'utilise pour rechercher du code tout le temps.
PowerShell a été mentionné à plusieurs reprises. Voici comment vous l'utiliseriez en fait de manière grecque:
Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"
Il recherche récursivement tous les fichiers texte dans l'arborescence de répertoires actuelle SomeString
avec une sensibilité à la casse.
Encore mieux, lancez ceci:
function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }
Alors fais:
pgrep SomeStringToSearch *.txt
Ensuite, pour vraiment le rendre magique, ajoutez l'alias de fonction à votre profil PowerShell et vous pouvez presque atténuer la douleur de ne pas avoir les outils de ligne de commande appropriés.
Cygwin inclut grep. Tous les outils GNU et les choses Unix fonctionnent très bien sur Windows si vous installez Cygwin.
Git sur Windows = grep dans cmd.exe
Je viens de découvrir que l'installation de Git vous donnera quelques commandes Linux de base: cat, grep, scp et toutes les autres bonnes.
Installez puis ajoutez le dossier Git bin à votre CHEMIN et votre cmd.exe a une fonctionnalité Linux de base!
dnGREP est un outil grep open source pour Windows. Il prend en charge un certain nombre de fonctionnalités intéressantes, notamment:
À mon humble avis, il a aussi une interface agréable et propre :)
J'utilise toujours WinGREP , mais j'ai eu des problèmes avec le fait qu'il ne lâche pas les fichiers.
Eh bien, à côté du port Windows du grep GNU à:
http://gnuwin32.sourceforge.net/
il y a aussi le grep de Borland (très similaire à celui de GNU) disponible dans le freeware Borland Free C ++ Compiler (c'est un freeware avec des outils en ligne de commande).
J'ai utilisé avec succès les utilitaires GNU pour Win32 depuis un certain temps et il a un bon grep ainsi que la queue et d'autres utilitaires gnu pratiques pour win32. J'évite le shell emballé et j'utilise simplement les exécutables directement dans l'invite de commande win32.
La queue qui est emballée est également une bonne petite application.
Je suis l'auteur d' Aba Search and Replace. Tout comme PowerGREP, il prend en charge les expressions régulières, l'enregistrement de modèles pour une utilisation ultérieure, l'annulation pour les remplacements, l'aperçu avec mise en évidence de la syntaxe pour HTML / CSS / JS / PHP, différents encodages, y compris UTF-8 et UTF-16.
En comparaison avec PowerGREP, l'interface graphique est moins encombrée. Aba commence instantanément la recherche lorsque vous tapez le motif (recherche incrémentielle), afin que vous puissiez expérimenter avec des expressions régulières et voir immédiatement les résultats.
Vous êtes invités à essayer mon outil; Je me ferai un plaisir de répondre à toutes vos questions.
Je voulais un outil grep gratuit pour Windows qui vous permettait de faire un clic droit sur un dossier et de faire une recherche regex de chaque fichier - sans écran de rappel.
Ce qui suit est une solution rapide basée sur celle findstr
mentionnée dans un article précédent.
Créez un fichier texte quelque part sur votre disque dur où vous conservez des outils de longue durée. Renommez-le en .bat ou .cmd et collez-y ce qui suit:
@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"
Naviguez ensuite jusqu'au dossier SendTo. Sous Windows 7, recherchez %APPDATA%\Microsoft\Windows\SendTo
et faites glisser un raccourci du fichier de commandes vers ce dossier SendTo.
J'ai renommé le raccourci pour 1 GREP
le garder en haut de la liste SendTo.
Ce que j'aimerais faire ensuite, c'est diriger la sortie de findstr
quelque chose qui générerait un fichier html afin que vous puissiez cliquer sur chaque ligne de sortie pour ouvrir ce fichier. De plus, je ne pense pas que cela fonctionne avec les raccourcis vers les dossiers. Je devrais inspecter le paramètre et voir s'il contient ".lnk".
J'ai utilisé le grep de Borland pendant des années, mais je viens de trouver un modèle qui ne correspondra pas. Eeeks. Quoi d'autre n'a-t-il pas trouvé au fil des ans? J'ai écrit un remplacement de recherche de texte simple qui fait une récursion comme grep - c'est FS.EXE sur la forge source.
grep échoue ...
C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>
windows findstr fonctionne ...
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]
Mon outil de choix est le Windows Grep correctement nommé :
La chaîne de sélection de PowerShell est similaire, ce ne sont pas les mêmes options et sémantique, mais elle est toujours puissante.
Si vous voulez un outil Windows Grep simple à utiliser, j'en ai créé un appelé P-Grep que j'ai rendu disponible en téléchargement gratuit depuis mon site Web: www.adjutantit.com - menu d'accueil, téléchargements.
Windows Grep semblait avoir des problèmes avec un grand nombre de fichiers, j'ai donc écrit le mien - ce qui semble plus fiable. Vous pouvez sélectionner un dossier, faire un clic droit et l'envoyer à P-Grep. Le dossier sendto n'est pas mis à jour pendant l'installation.
J'utilise AJC Grep quotidiennement depuis des années. La seule limitation majeure que j'ai trouvée est que les chemins d'accès aux fichiers sont limités à 255 caractères et il s'arrête lorsqu'il en rencontre un, plutôt que de simplement émettre un avertissement. C'est ennuyeux mais ça n'arrive pas très souvent.
Je l'utilise sur Windows 7 Ultimate 64 bits, donc ses informations d'identification 64 bits sont très bien.
Je l'utilise depuis toujours et heureusement, il est toujours disponible. C'est super rapide et très petit.
Si aucune des solutions n'est tout à fait ce que vous cherchez, peut-être pourriez-vous écrire à FindStr un wrapper qui fait exactement ce dont vous avez besoin?
FindStr est assez bon de toute façon, il devrait donc simplement faire tomber une interface graphique (si vous le souhaitez) et fournir quelques fonctionnalités supplémentaires (comme la combiner avec Find pour trouver le nombre de fichiers qui contiennent une chaîne spécifiée [mentionnée ci-dessus]).
Ceci, bien sûr, suppose que vous avez les exigences, le temps et l'envie de le faire!
J'ai installé Cygwin sur ma machine et j'ai mis le répertoire bin Cygwin dans mon chemin environnemental, donc le grep Cygwin fonctionne comme d'habitude dans une ligne de commande qui résout tous mes besoins de script pour grep pour le moment.