ne confondez pas ms-dos avec l'invite de commande. + utilisation de find and findstr et même de grep, pour Windows .. se trouve facilement avec une recherche rapide. il existe même des tables de commandes équivalentes sous Linux et Windows. aussi votre exemple bash n’est même pas spécifique à bash .. je suppose juste, * nix OS.
Barlop
Réponses:
280
Findstr ressemble à ce que vous voulez. Je l'utilise tout le temps comme un équivalent approximatif de grep sur la plate-forme Windows.
Oui, cela semble être ce que je recherche. Je comprends qu'il y a probablement des limites. Je vais essayer.
Chrisjlee
18
pourquoi ne pourraient-ils pas simplement l'appeler grep!
Victor Grazi
6
@VictorGrazi Ils l'ont fait au début, voir cet article . Il s'appelait à l'origine qgrep - mais a ensuite été renommé.
Zitrax
3
Le gros problème findstrest que le motif regex peut ne pas contenir d'alternatives.
Wolf
La question concerne Windows 7, mais quelles autres versions de Windows ont findstrpar défaut? Depuis Windows XP ?
Peter Mortensen
44
Il y a plusieurs possibilités:
Utilisez le port d'une grepcommande Unix . Il y a plusieurs choix. On mentionne souvent GNUWin32 , cygwin et unxutils . Les outils de la boîte à outils de l' utilitaire SFUA , qui s'exécutent dans le sous - système pour les applications UNIX et fournis avec Windows 7 Édition Intégrale et Windows Server 2008 R2 , sont moins connus mais, à certains égards, mieux . (Sous Windows XP, vous pouvez télécharger et installer Services for UNIX version 3.5 .) Cette boîte à outils contient un grand nombre d’outils TUI en ligne de commande, depuis mvet à dutravers les shells Korn et C, vers perletawk. Il vient dans les deux saveurs x86-64 et IA64 aussi bien que x86-32. Les programmes s'exécutent dans l'environnement POSIX propre et naturel de Windows, plutôt qu'avec des DLL d'émulateur (telles que des cygwin1.dllcouches superposées sur Win32). Et oui, la boîte à outils a grep, ainsi que 300 autres.
cygwin a bien travaillé pour moi sur Win 7. J'avais besoin de grep et GnuWin32 grep ne fonctionnait pas pour moi.
Kozuch
Vous écrivez que je ne vois pas perl dans SUA C: \ Windows \ SUA> dir perl * / s / b Fichier non trouvé et en cours d’exécution, par exemple, shell c de SUA, je ne le vois pas dans / bin
barlop
vous écrivez également que la SFUA est à certains égards meilleure. De quelle manière?
barlop
@ Kozuch, à moins que vous n'indiquiez comment cela n'a pas fonctionné, votre commentaire n'est pas utile
barlop
19
Si les commandes PowerShell sont autorisées, utilisez
PS C:\> Get-ChildItem | Select-String root
ou court
PS C:\> ls | sls root
Sachez que l'alias slsn'est défini qu'à partir de PowerShell version 3.0. Vous pouvez ajouter un alias pour moins de frappe:
PS C:\> New-Alias sls Select-String
Pour exécuter la commande PowerShell directement à partir de cmd, utilisez
Dans votre première révision, vous avez écrit MS-DOS, il n'y en a que FIND, pour autant que je sache. Mais c'est un ancien système d'exploitation qui n'est plus utilisé.
Dans l'invite de commande Windows NT (par exemple Win2K et gagner XP et versions ultérieures, donc par exemple win7, win10), vous pouvez utiliser findet findstrsi vous téléchargez GnuWin32 puisgrep
Les différences fondamentales sont que findstr prend en charge certaines expressions régulières . Grep supporte mieux les expressions régulières.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?et findstr /?vous montre ce que font les commutateurs.
Gnuwin32 a des "packages". Si vous téléchargez GnuWin32, je suggère le paquet coreutils pour un ensemble d’utilitaires de base utiles que vous connaissez bien, mais grep n’est pas dans celui-là, c’est son propre paquet.
Ajoutée
Le grep de GnuWin32, la dernière fois que j'ai vérifié, est vieux. Le grep de Cygwin est beaucoup plus à jour. Notez également que de nombreuses personnes utilisent des machines virtuelles plutôt que les commandes Windows des commandes * nix.
Si vous préférez utiliser grepplutôt qu’une version de fichier findstrunique .exedans UnxUtils , elle est donc portable et il n’est pas nécessaire de l’installer, ni d’utiliser quelque chose comme Cygwin.
Ceci est intéressant mais nécessiterait l’installation de cet outil.
Chrisjlee
3
@Chris: Il n'y a pas d'installation. C'est juste un .zipfichier de .exefichiers. Le seul petit inconvénient est que les versions sont légèrement anciennes.
paradroid
6
Quel est l'inconvénient d'être vieux? Le logiciel peut-il être vieux? Tous les octets frais.
@userunknown bien, par exemple, la commande unxutils sed est plus ancienne et ne prend pas en charge \ d eg \ d22 pour spécifier un devis. Un ancien wget ne téléchargera peut-être pas une page plus récente et, si vous demandez de l'aide, il vous demandera peut-être de vous procurer la dernière, car cela peut résoudre certains problèmes. Un très vieux grep n'aura sans doute pas le niveau de support regex actuel
barlop
3
Vous pouvez essayer d'installer Chocolatey sous Windows et, par la même occasion, installer l' outil Gow . Cela vous fournira avec grepWindows.
Gowstand pour GNU sous Windows. Il fournit des utilitaires de ligne de commande Unix sous Windows.
C'est un gestionnaire de paquets, comme un apt-get mais pour Windows. Il tire son nom parce que le développeur l’a basé sur NuGet, un gestionnaire de paquets pour Visual Studio, et cela ressemble à une pépite (comme dans une pépite de poulet). Il a donc pensé qu'il serait "drôle" ou "intelligent" et son programme Chocolatey NuGet. J'ai entendu cela sur un podcast qui l'a interviewé. Gow peut aussi être téléchargé indépendamment
barlop
1
Je suis nouveau chez Gow, après quelques jours d'utilisation, je peux témoigner que je l'aime beaucoup - il est meilleur que tous les anciens ports d'utilitaires UNIX que j'avais utilisés auparavant.
Radim Cernej le
@RadimCernej votre commentaire n'est utile que si vous indiquez en quoi vous pensez qu'il est meilleur.
barlop
@barlop: Depuis que j'ai écrit mon commentaire de janvier 2016, je suis progressivement et complètement passé à Gow. Jusqu'à présent, pas de bugs, il contient tous les utilitaires dont j'ai besoin / utiliser, les chemins d'accès sont générés au format Microsoft (ce qui facilite la copie / collage dans d'autres programmes). Gow est suffisamment peu invasif (facile à installer et à retirer) pour que je vous recommande fortement de le tester.
Radim Cernej
2
Utilisation Bash
$ ls | grep root
Cmd utilisation
> dir /b | findstr root
où /best synonyme de b sont la liste des répertoires et fichiers
Cela duplique une autre réponse et n’ajoute aucun nouveau contenu. S'il vous plaît, ne postez pas de réponse, sauf si vous avez réellement quelque chose de nouveau à contribuer.
DavidPostill
@ DavidPostill: C'est une solution rapide pour les utilisateurs "TL; DR" (comme moi)
vladkras
Ce n’est pas une excuse pour ajouter une réponse qui n’apporte rien de nouveau. Dans tous les cas, la réponse acceptée apparaîtra toujours en premier, elle sera donc lue avant la vôtre.
DavidPostill
@ DavidPostill, ne vous dérange pas, mais la réponse acceptée contient plusieurs clés excessives et inexpliquées/B , /Ret /COP n'a pas posé de question, alors que ma réponse donne l' équivalent exact
vladkras
Le /best de rendre la dirsortie identique à la lssortie. Si vous le testez, vous verrez la différence. Ce n'est donc pas l'équivalent exact.
DavidPostill
2
J'ai écrit une alternative Windows à grep en utilisant du code hybride Batch / JScript. J'ai écrit ceci parce qu'obtenir les caractères d'échappement directement dans le port grep GNU Win32 était une vraie douleur. Cette version fonctionne beaucoup plus comme vous voudriez que la version GNU fonctionne sous Windows:
Le programme de remplacement multiple a été préparé de sorte que de nombreuses fonctions puissent être exécutées à l’aide de paramètres de ligne de commande. L'utilisation de la ligne de commande est vue ci-dessous:
Vous pouvez toujours utiliser vos commandes habituelles grepet d'autres commandes Linux en téléchargeant cet outil UnxUtils et en l'ajoutant à l'emplacement de votre PATHvariable d'environnement.
Si vous souhaitez ajouter le plus simple grepà votre environnement Windows, recherchez c:\windows\system32et ajoutez un petit script batch en utilisant cette commande:
echo findstr %1 > grep.bat
Maintenant vous pouvez
dir | grep notepad.exe
ce qui est vraiment un mélange effrayant de merde. Donc, ajoutez un autre script de lot pour lscomme expliqué dans ce post
Réponses:
Findstr ressemble à ce que vous voulez. Je l'utilise tout le temps comme un équivalent approximatif de grep sur la plate-forme Windows.
Un autre exemple avec des tuyaux:
la source
findstr
est que le motif regex peut ne pas contenir d'alternatives.findstr
par défaut? Depuis Windows XP ?Il y a plusieurs possibilités:
grep
commande Unix . Il y a plusieurs choix. On mentionne souvent GNUWin32 , cygwin et unxutils . Les outils de la boîte à outils de l' utilitaire SFUA , qui s'exécutent dans le sous - système pour les applications UNIX et fournis avec Windows 7 Édition Intégrale et Windows Server 2008 R2 , sont moins connus mais, à certains égards, mieux . (Sous Windows XP, vous pouvez télécharger et installer Services for UNIX version 3.5 .) Cette boîte à outils contient un grand nombre d’outils TUI en ligne de commande, depuismv
et àdu
travers les shells Korn et C, versperl
etawk
. Il vient dans les deux saveurs x86-64 et IA64 aussi bien que x86-32. Les programmes s'exécutent dans l'environnement POSIX propre et naturel de Windows, plutôt qu'avec des DLL d'émulateur (telles que descygwin1.dll
couches superposées sur Win32). Et oui, la boîte à outils agrep
, ainsi que 300 autres.grep
commandes Win32 natives que les utilisateurs ont écrites et publiées. Tim Charron a par exemple une version Win32 native d’un grap GNU modifié . Il existe également PowerGREP , Bare Grep , grepWin , AstroGrep et dnGrep , bien qu'il s'agisse de programmes à interface graphique et non de programmes TUI.find
etfindstr
. La syntaxe est différente de celle degrep
, note, de même que la capacité d'expression régulière.la source
Si les commandes PowerShell sont autorisées, utilisez
ou court
Sachez que l'alias
sls
n'est défini qu'à partir de PowerShell version 3.0. Vous pouvez ajouter un alias pour moins de frappe:Pour exécuter la commande PowerShell directement à partir de cmd, utilisez
la source
Dans votre première révision, vous avez écrit MS-DOS, il n'y en a que
FIND
, pour autant que je sache. Mais c'est un ancien système d'exploitation qui n'est plus utilisé.Dans l'invite de commande Windows NT (par exemple Win2K et gagner XP et versions ultérieures, donc par exemple win7, win10), vous pouvez utiliser
find
etfindstr
si vous téléchargez GnuWin32 puisgrep
Les différences fondamentales sont que findstr prend en charge certaines expressions régulières . Grep supporte mieux les expressions régulières.
find /?
etfindstr /?
vous montre ce que font les commutateurs.Gnuwin32 a des "packages". Si vous téléchargez GnuWin32, je suggère le paquet coreutils pour un ensemble d’utilitaires de base utiles que vous connaissez bien, mais grep n’est pas dans celui-là, c’est son propre paquet.
Ajoutée
Le grep de GnuWin32, la dernière fois que j'ai vérifié, est vieux. Le grep de Cygwin est beaucoup plus à jour. Notez également que de nombreuses personnes utilisent des machines virtuelles plutôt que les commandes Windows des commandes * nix.
la source
Si vous préférez utiliser
grep
plutôt qu’une version de fichierfindstr
unique.exe
dans UnxUtils , elle est donc portable et il n’est pas nécessaire de l’installer, ni d’utiliser quelque chose comme Cygwin.la source
.zip
fichier de.exe
fichiers. Le seul petit inconvénient est que les versions sont légèrement anciennes.grep
pour Windows: gnuwin32.sourceforge.net/packages/grep.htmVous pouvez essayer d'installer Chocolatey sous Windows et, par la même occasion, installer l' outil Gow . Cela vous fournira avec
grep
Windows.Gow
stand pour GNU sous Windows. Il fournit des utilitaires de ligne de commande Unix sous Windows.la source
Utilisation Bash
Cmd utilisation
où
/b
est synonyme de b sont la liste des répertoires et fichiersla source
/B
,/R
et/C
OP n'a pas posé de question, alors que ma réponse donne l' équivalent exact/b
est de rendre ladir
sortie identique à lals
sortie. Si vous le testez, vous verrez la différence. Ce n'est donc pas l'équivalent exact.J'ai écrit une alternative Windows à grep en utilisant du code hybride Batch / JScript. J'ai écrit ceci parce qu'obtenir les caractères d'échappement directement dans le port grep GNU Win32 était une vraie douleur. Cette version fonctionne beaucoup plus comme vous voudriez que la version GNU fonctionne sous Windows:
Vous pouvez toujours trouver la dernière version sur ma page Gist pour cela.
la source
http://www.multireplacer.com
Le programme de remplacement multiple a été préparé de sorte que de nombreuses fonctions puissent être exécutées à l’aide de paramètres de ligne de commande. L'utilisation de la ligne de commande est vue ci-dessous:
la source
Vous pouvez toujours utiliser vos commandes habituelles
grep
et d'autres commandes Linux en téléchargeant cet outil UnxUtils et en l'ajoutant à l'emplacement de votrePATH
variable d'environnement.la source
2.4.2
mais gnuwin32 en a un plus tard2.5.4
Je suggérerais d'utiliser busybox-w32 , car sa taille n'est que d'environ 500 Ko et qu'il est maintenu activement.
Ainsi, dans votre cas, à l'invite de commande, il s'agit de:
Vous pouvez utiliser
doskey
une invite de commande lancée par un fichier de commandes pour créer une commande, telle que:Ensuite, vous pouvez utiliser
ls | grep root
sur l'invite de commande.la source
Si vous souhaitez ajouter le plus simple
grep
à votre environnement Windows, recherchezc:\windows\system32
et ajoutez un petit script batch en utilisant cette commande:Maintenant vous pouvez
ce qui est vraiment un mélange effrayant de merde. Donc, ajoutez un autre script de lot pour
ls
comme expliqué dans ce postMaintenant, les choses semblent un peu familier
HTH
la source
Ce sera un équivalent rapide et sale.
la source