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?
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?
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]"
Oui, c'est ce que je recherche. Je comprends qu'il y a probablement des limitations. Je vais essayer.
@VictorGrazi Ils l'ont effectivement fait au début, voir cet article. Il s'appelait à l'origine qgrep - mais a été renommé plus tard.
Il existe plusieurs possibilités :
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.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.find
et findstr
fournies. La syntaxe est différente de celle de grep
, notez, tout comme la capacité d'expression régulière.
Cygwin a bien fonctionné pour moi sur Win 7. J'avais besoin de grep et GnuWin32 grep ne fonctionnait pas pour moi.
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
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"
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.
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.
@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.
Quel est l'inconvénient d'être vieux? Le logiciel peut-il être vieux? Tous les octets frais.
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.
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.