Windows 7でGrepに相当するものは?

cmd.exe grep windows-7

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

Bash use:

ls | grep root

Windowsのコマンドプロンプトからだと何になるんだろう?

  259  chrisjlee  2011-06-22


ベストアンサー

Findstr はあなたが欲しいもののように聞こえます。私はWindowsプラットフォーム上での近似的なgrep-equivalentとしていつもこれを使っています

パイプを使った別の例

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

304  Greg Jackson  2011-06-22


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

  • Unixのgrepコマンドのポートを使用します。いくつかの選択肢があります。よく知られているのは、GNUWin32cygwinunxutilsです。あまり知られていませんが、SFUA utility toolkit のツールは、Subsystem for UNIX-based Applications Windows 7 Ultimate edition と Windows Server 2008 R2 の箱に入っています。(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以上のツールキットが含まれています
  • 人々が書いて公開している多くの Win32 ネイティブな grep コマンドのうちの一つを使ってください。Tim Charron は a native Win32 version of a modified GNU grep などを持っています。PowerGREP, Bare Grep, grepWin, AstroGrep, dnGrep, これらはすべてTUIプログラムではなくGUIプログラムですが
  • 与えられた findfindstr を使用します。正規表現機能と同様に、構文はgrepとは異なります

46  JdeBP  2011-06-23


PowerShell コマンドが許可されている場合は、使用します

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

or short

PS C:\> ls | sls root

エイリアス sls は PowerShell バージョン 3.0 以降でしか定義されていないことに注意してください。エイリアスを追加することで、入力の手間を省くことができます

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

cmdから直接PowerShellコマンドを実行するには、以下のようにします

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

23  oleschri  2014-01-13


初期の改訂で書いたMS-DOSは、私の知る限りではFINDしかありません。でも、もう使われていない古いOSなんですよね

Windows NTのコマンドプロンプト(例えばWin2KやWinXP以降、例えばwin7,win10)では、findfindstrを使い、GnuWin32をダウンロードすれば、grepを使うことができます

基本的な違いは、findstrが正規表現をサポートしていることですGrep は正規表現を最もよくサポートしています

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

find /?findstr /?はスイッチが何をしているかを示しています

Gnuwin32には「パッケージ」があります。もし GnuWin32 をダウンロードするならば、おなじみの基本的な便利なユーティリティのために coreutils パッケージをお勧めしますが、 grep はそのパッケージには含まれていません

Added

GnuWin32のgrepは、私が最後にチェックしたときには、古いものでした。Cygwinのgrepははるかに最新のものです。また、多くの人が *nix コマンドの Windows ポートではなく、仮想マシンを使っていることを心に留めておいてください

19  barlop  2011-06-22


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

9  paradroid  2011-06-22


Windows上にChocolateyをインストールしてみて、それを通してGowツールをインストールしてみてください。これにより、Windows上でgrepが利用できるようになります

GowはWindows上のGNUの略です。Windows上のUnixコマンドラインユーティリティを提供します

3  Atur  2014-09-11


ハイブリッドバッチ/スクリプトコードを使って、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のページで最新版を見つけることができます

3  krowe  2015-03-03


Bash use

$ ls | grep root

Cmd use

> dir /b | findstr root

ここで、/bはディレクトリとファイルのむき出しのリストを表します

2  vladkras  2016-05-02


Multi Replacer - Windows Grep, File Search, Text Replace and Data Extraction Tool
Multi Replacer, Search and Replace Text Files,Grep Tool

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

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]

1  user298490  2014-02-08


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

0  thucnguyen  2014-09-03


私は、busybox-w32を使用することをお勧めします

あなたの場合、コマンドプロンプトでは、そうですね

busybox ls | busybox grep root

バッチファイルで起動するコマンドプロンプトでdoskeyを使用してコマンドを作成することができます

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

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

そして、コマンドプロンプトでls | grep rootを使用します

0  kissson  2016-06-12


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

echo findstr %1 > grep.bat

今、あなたはすることができます

dir | grep notepad.exe

というのは、本当に恐ろしいほどのクソが混ざっています。そこで、このpostで説明されているように、ls用のバッチスクリプトを追加します

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

今は少し見慣れた感じになってきました

ls | grep notepad

HTH

0  domih  2017-07-04


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

-2  Superguest  2016-03-25


タイトルとURLをコピーしました