J'ai besoin de faire un grep récursif sous Windows, quelque chose comme ceci sous Unix / Linux:
grep -i 'string' `find . -print`
ou la méthode préférée:
find . -print | xargs grep -i 'string'
Je suis coincé avec seulement cmd.exe, donc je n'ai que des commandes intégrées à Windows. Je ne peux pas installer Cygwin , ni aucun outil tiers comme UnxUtils sur ce serveur malheureusement. Je ne suis même pas sûr de pouvoir installer PowerShell. Des suggestions en utilisant uniquement les cmd.exe intégrés (Windows 2003 Server)?
windows
command-line
grep
Andy White
la source
la source
grep -i 'string' -R .
ce que, comme le suggère @NathanFellman, évite le problème des commandes trop longues.Réponses:
findstr
peut effectuer des recherches récursives (/ S) et prend en charge une variante de la syntaxe d'expression régulière (/ R).la source
Les paramètres ont les significations suivantes:
s
= récursifp
= ignorer les caractères non imprimablesi
= insensible à la cassen
= imprimer les numéros de ligneEt la chaîne à rechercher est le bit que vous mettez entre guillemets après
/c:
la source
spin
? Est-ce la ligne de texte à trouver? Et / g ou / f n'est-il pas utilisé pour spécifier des fichiers? Alors, avec les accolades carrées?findstr /?
explique chaque paramètre. s = récursif, p = ignorer les caractères non imprimables, i = insensible à la casse, n = imprimer les numéros de ligne. Vous n'avez pas nécessairement besoin de tout cela, mais je les aime bien, etspin
c'est facile à retenir. La chaîne à rechercher est le bit que vous mettez entre guillemets après/c:
./?
, mais je ne savais pas vraiment que les modificateurs étaient utilisés comme/spin
. Je pensais qu'ils étaient utilisés comme/s/p/i/n
./
s. C'est un. Ils ne vous laissent pas tous faire cela. Vous savez, cmd est très spécial.Je viens de rechercher un texte avec la commande suivante qui m'a répertorié tous les noms de fichiers contenant mon «texte de recherche» spécifié.
la source
Je recommande un très bon outil:
utils natifs unix:
Déballez-les et placez ce dossier dans votre variable d'environnement PATH et le tour est joué! :)
Fonctionne comme un charme, et il y a beaucoup plus que juste grep;)
la source
Recherche récursive de
import
mot dans lesrc
dossier:la source
la source
Select-String
a fonctionné le mieux pour moi. Toutes les autres options répertoriées ici, telles quefindstr
, ne fonctionnaient pas avec des fichiers volumineux.Voici un exemple:
remarque : cela nécessite Powershell
la source
Si Perl est installé, vous pouvez utiliser ack , disponible sur http://beyondgrep.com/ .
la source