287 votes

Équivalent de Grep pour Windows 7?

Y a-t-il un équivalent de la commande grep pour Windows 7? En d'autres termes, je veux filtrer les résultats d'une commande:

Utilisation de Bash:

ls | grep root

Que serait-il en utilisant l'invite de commandes Windows?

10 votes

Ne confondez pas MS-DOS avec l'invite de commandes. + L'utilisation de find et findstr et même grep, pour Windows.. se trouve sûrement facilement avec une recherche rapide. Il existe même des tableaux de commandes équivalentes dans Linux et Windows. De plus, votre exemple bash n'est même pas spécifique à bash.. juste je suppose, un OS *nix.

336voto

Greg Jackson Points 3475

Findstr semble être ce que vous voulez. Je l'utilise tout le temps comme équivalent approximatif de grep sur la plateforme Windows.

Un autre exemple avec des pipes :

C:\> dir /B | findstr /R /C:"[mp]"

1 votes

Oui, c'est ce que je recherche. Je comprends qu'il y a probablement des limitations. Je vais essayer.

35 votes

Pourquoi n'auraient-ils pas pu simplement l'appeler grep!

10 votes

@VictorGrazi Ils l'ont effectivement fait au début, voir cet article. Il s'appelait à l'origine qgrep - mais a été renommé plus tard.

48voto

JdeBP Points 25711

Il existe plusieurs possibilités :

  • Utilisez un port d'une commande Unix grep. Il existe plusieurs choix. Souvent mentionnés sont GNUWin32, cygwin et unxutils. Moins connus, mais par certains aspects meilleurs, sont les outils dans le kit d'outils SFUA, qui s'exécutent dans le Sous-système pour les applications basées sur UNIX fourni avec Windows 7 édition Ultimate et Windows Server 2008 R2. (Pour Windows XP, on peut télécharger et installer Services pour UNIX version 3.5.) Ce kit contient un grand nombre d'outils TUI en ligne de commande, de mv et du, en passant par les shells Korn et C, jusqu'à perl et awk. Il existe en versions x86-64 et IA64 ainsi qu'en x86-32. Les programmes s'exécutent dans l'environnement POSIX natif de Windows, plutôt qu'avec des DLL émulateurs (comme cygwin1.dll) superposant des éléments sur Win32. Et oui, le kit d'outils contient grep, ainsi que quelque 300 autres.
  • Utilisez l'un des nombreux commandes natives Win32 grep que les gens ont écrits et publiés. Tim Charron a une version native Win32 d'un grep GNU modifié, par exemple. Il existe également PowerGREP, Bare Grep, grepWin, AstroGrep et dnGrep, bien que ce soient tous des programmes GUI et non des programmes TUI.
  • Utilisez les commandes find et findstr fournies. La syntaxe est différente de celle de grep, notez, tout comme la capacité d'expression régulière.

0 votes

Cygwin a bien fonctionné pour moi sur Win 7. J'avais besoin de grep et GnuWin32 grep ne fonctionnait pas pour moi.

0 votes

Vous écrivez Je ne vois pas perl dans SUA C: \ Windows \ SUA> dir perl * / s / b Fichier non trouvé et en exécutant par exemple le shell c de SUA, je ne le vois pas dans /bin

0 votes

Vous écrivez également que SFUA est à certains égards meilleur. En quoi ?

28voto

oleschri Points 1165

Si les commandes PowerShell sont autorisées, utilisez

PS C:\> Get-ChildItem | Select-String root

ou de manière plus concise

PS C:\> ls | sls root

Sachez que l'alias sls n'est défini qu'à partir de la version 3.0 de PowerShell. Vous pouvez ajouter un alias pour moins taper :

PS C:\> New-Alias sls Select-String

Pour exécuter la commande PowerShell directement depuis cmd, utilisez

C:\>powershell -command "ls | select-string root"

4 votes

26voto

barlop Points 21549

Dans votre première révision, vous avez écrit MS-DOS, il n'y a que FIND, autant que je sache. Mais c'est un ancien système d'exploitation qui n'est plus utilisé.

Dans l'invite de commandes de Windows NT (par exemple, Win2K et Win XP et ultérieurs, donc par exemple win7, win10), vous pouvez utiliser find et findstr et si vous téléchargez GnuWin32 alors grep

Les principales différences sont que findstr a un certain support pour les expressions régulières. Grep prend en charge les expressions régulières de la meilleure manière.

C:\>dir | find "abc"
C:\>dir | find /i "abc"

find /? et findstr /? vous montrent à quoi servent les commutateurs.

Gnuwin32 a des "packages". Si vous téléchargez GnuWin32, je suggère le package coreutils pour un tas d'utilitaires de base utiles avec lesquels vous seriez familier, mais grep n'est pas inclus dans celui-ci, c'est son propre package.

Ajouté

Le grep de GnuWin32, la dernière fois que j'ai vérifié, est ancien. Le grep de Cygwin est beaucoup plus à jour. Gardez également à l'esprit que de nombreuses personnes utilisent des machines virtuelles plutôt que des ports Windows des commandes *nix.

9voto

paradroid Points 22121

Si vous préférez utiliser grep plutôt que findstr, il existe une version unique du fichier .exe dans UnxUtils, donc c'est portable et il n'est pas nécessaire de l'installer, ou d'utiliser quelque chose comme Cygwin.

0 votes

Ceci est intéressant mais nécessiterait l'installation de cet outil.

3 votes

@Chris: Il n'y a pas d'installation. C'est juste un fichier .zip de fichiers .exe. Le seul petit inconvénient est que les versions sont légèrement anciennes.

6 votes

Quel est l'inconvénient d'être vieux? Le logiciel peut-il être vieux? Tous les octets frais.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X