2011-06-22 20:51:57 +0000 2011-06-22 20:51:57 +0000
246
246
Advertisement

Windows7用のGrep相当品?

Advertisement

Windows7用のコマンドプロンプトgrep相当品はありますか?つまり、コマンドの結果をフィルタリングしたいのですが、

Bash use:

ls | grep root

Windowsのコマンドプロンプトからだと何になるのでしょうか?

Advertisement
Advertisement

回答 (13)

287
287
287
2011-06-22 21:00:56 +0000
45
45
45
2011-06-23 13:06:17 +0000

いくつかの可能性があります:

  • **Unix の grep コマンドのポートを使用します。よく知られているのは、GNUWin32cygwinunxutilsです。あまり知られていませんが、いくつかの点で優れているのは、 SFUAユーティリティツールキット に含まれるツールで、Windows 7 Ultimate editionとWindows Server 2008 R2の箱に入っている Subsystem for UNIX-based Applications で動作します。(Windows XPの場合は、ダウンロードをダウンロードして Services for UNIX version 3.5 をインストールすることができます。) このツールキットには、mvduから、KornやCシェルを経て、perlawkまで、多くのコマンドラインTUIツールが含まれています。このツールキットには、x86-64、IA64、x86-32の両方のフレーバーがあります。プログラムは、(cygwin1.dllのような)エミュレータDLLをWin32に重ねるのではなく、Windowsのネイティブの適切なPOSIX環境で実行されます。そして、このツールキットには、grepの他にも300種類以上のコマンドがあります。また、 PowerGREP , Bare Grep , grepWin , AstroGrep , and dnGrep もありますが、これらはすべて TUI プログラムではなく GUI プログラムです。
  • **付属の grepfind を使用してください。
19
Advertisement
19
19
2014-01-13 13:16:43 +0000
Advertisement

PowerShell** コマンドが許可されている場合は、

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

または short

PS C:\> ls | sls root

を使用してください。より少ないタイプのためにエイリアスを加えることができます:

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

cmd から直接 PowerShell コマンドを実行するためには、

C:\>powershell -command "ls | select-string root"
``` を使用して下さい
18
18
18
2011-06-22 21:00:57 +0000

初期の改訂版ではMS-DOSと書かれていましたが、私の知る限りでは FINDしかありません。

Windows NTのコマンドプロンプト(Win2KやwinXP以降はwin7,win10など)では、findfindstrが使えますし、GnuWin32をダウンロードすれば、grep

基本的な違いは、findstrが正規表現をサポートしているかどうかです。Grep は正規表現をサポートしています。

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

find /?findstr /? はスイッチが何をするかを示しています。もし GnuWin32 をダウンロードするなら、お馴染みの基本的な便利なユーティリティのために coreutils パッケージをお勧めしますが、 grep はその中には入っていません。Cygwinのgrepははるかに最新のものです。また、多くの人がWindowsのポートではなく、仮想マシンを使っていることにも注意してください。

9
Advertisement
9
9
2011-06-22 21:07:43 +0000
Advertisement

というよりも、grepを使いたいのであれば、 UnxUtils の中にfindstrのファイルバージョンが1つあるので、ポータブルで、インストールしたり、Cygwinのようなものを使う必要はありません。

3
3
3
2014-09-11 05:33:28 +0000

WindowsにChocolateyをインストールしてみて、その中にGowツールをインストールしてみてください。これにより、Windows上のgrepが利用できるようになります。Windows上のUnixコマンドラインユーティリティを提供します。

2
Advertisement
2
2
2016-05-02 05:47:50 +0000
Advertisement

Bash使用

$ ls | grep root

Cmd使用

> dir /b | findstr root

bはディレクトリとファイルのリストです。

2
2
2
2015-03-03 11:06:06 +0000

ハイブリッドバッチ/スクリプトコードを使って、Windowsでのgrepの代替案を書きました。これを書いたのは、GNU Win32 grepポートでエスケープ文字を正しいものにするのが本当に面倒だったからです。このバージョンは、GNUバージョンがWindowsで動作するようにしたいと思う方法にもっと似ています:

@set @junk=1 /*
@cscript //nologo //E:jscript %~f0 %*
@goto :eof */

var args=WScript.Arguments, argCnt=args.Length, stdin=WScript.StdIn, stdout=WScript.StdOut;
var replaceSingleQuotes=false, printMatchesOnly=false, matchString, flagString, regex, argDx=0;

if(argCnt==0) {
    throw new Error("You must provide search criteria.");
}

flagString=""
if(argCnt>1) {
    for(var bLoop=true; bLoop&&argDx<argCnt-1; argDx++) {
        switch(args(argDx)) {
        case '-t': replaceSingleQuotes=true; break;
        case '-o': printMatchesOnly=true; break;
        case '-g': flagString+="g"; break;
        case '-i': flagString+="i"; break;
        case '-m': flagString+="m"; break;
        default: bLoop=false; break;
        }
    }
}
if(replaceSingleQuotes) {
    matchString=args(argCnt-1).replace("'", '"');
} else {
    matchString=args(argCnt-1);
}

if(printMatchesOnly) {
    while(!stdin.AtEndOfStream) {
        var sLine=stdin.ReadLine();
        if(flagString.Length) regex=new RegExp(matchString, flagString);
        else regex=new RegExp(matchString);
        var m,matches=[],startDx=0;
        while((m=regex.exec(sLine.substr(startDx))) !== null) {
            stdout.WriteLine(m[0]);
            startDx+=m.lastIndex;
        }
    }
} else {
    if(flagString.Length) regex=new RegExp(matchString, flagString);
    else regex=new RegExp(matchString);
    while(!stdin.AtEndOfStream) {
        var sLine=stdin.ReadLine();
        if(regex.test(sLine)) {
            stdout.WriteLine(sLine);
        }
    }

}

いつでも最新のバージョンを私の Gist ページで見つけることができます。

1
Advertisement
1
1
2014-02-08 22:15:42 +0000
Advertisement

http://www.multireplacer.com

コマンドラインパラメータを使用して多くの機能を実行できるようにマルチリプライサープログラムを用意しました。コマンドラインでの使用方法は以下の通りです。

MultiReplacer [Multi Replacer File] | [Search files] | [Search folders]
[-Subs] [-NoSubs] [-IncPtr=pattern] [-ExcPtr=patterns] [-DestDir=destination]
[-DMAnyTime]
[-DMWithinanhour] [-DMToday] [-DMYesterday] [-DMThisweek] [-DMThismonth]
[-DMThisYear]
[-CDMAfter=date] [-CDMBefore=date] [-MinFileSize=bytes count]
[-MaxFileSize=bytes count]
[-Search=text] [-Case] [-NoCase] [-Regex] [-NoRegex] [-SubMatchText=text]
[-ReplaceText=text]
[-StartSearch] [-StartReplace] [-AutoClose] [-StopAfterMatchThisFile] [-StopAfterMatchAll]
[-ExtractedWordsFile=filename] [-ExtractedLinesFile=filename] [-
ReportFile=filename]
0
0
0
2016-06-12 12:31:27 +0000

私は、 busybox-w32 を使うことをお勧めします、サイズが約500 KBしかなく、アクティブにメンテナンスされているので。

そう、あなたの場合、コマンドプロンプトでは、次のようになります:

busybox ls | busybox grep root

あなたは、コマンドを作成するためのバッチファイルによってコマンドプロンプトの起動でdoskeyを使用することができます:

doskey ls="path\to\busybox.exe" ls $*

doskey grep="path\to\busybox.exe" grep $*

それから、コマンドプロンプトでls | grep rootを使用することができます。

0
0
0
2017-07-04 08:34:21 +0000

あなたのWindows環境に最もシンプルなgrepを追加したい場合は、c:\windows\system32に移動し、このコマンドを使用して少しバッチスクリプトを追加します:

echo findstr %1 > grep.bat

今、あなたは本当にクソの怖いミックスである

dir | grep notepad.exe

をすることができます。だからこの[記事]で説明したようにlsのための別のバッチスクリプトを追加します(https://stackoverflow.com/a/15043472/1037303)

echo dir %1 > %systemroot%\system32\ls.bat

今のものは少し見慣れた

ls | grep notepad

HTH

0
0
0
2014-09-03 02:48:08 +0000

このツール UnxUtils をダウンロードして、grep の環境変数に追加することで、おなじみの PATH や他の Linux コマンドを使用することができます。

-2
-2
-2
2016-03-25 08:35:24 +0000
echo findstr %1 %2 %3 %4 %5 > %systemroot%\grep.cmd

それはクイック&ダーティー相当になりそうですね

C:\Windows\system32>dir | grep xwiz
C:\Windows\system32>findstr xwiz
2009.06.10 23:03 4.041 xwizard.dtd
2009.07.14 03:39 42.496 xwizard.exe
2009.07.14 03:41 432.640 xwizards.dll
Advertisement

関連する質問

3
28
13
7
15
Advertisement
Advertisement