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
コマンドのポートを使用します。いくつかの選択肢があります。よく知られているのは、GNUWin32、cygwin、unxutilsです。あまり知られていませんが、SFUA utility toolkit のツールは、Subsystem for UNIX-based Applications Windows 7 Ultimate edition と Windows Server 2008 R2 の箱に入っています。(Windows XP の場合は、ダウンロードと、Services for UNIX version 3.5をインストールすることができます)。このツールキットには、mv
やdu
からKornやCシェル、perl
やawk
まで、多数のコマンドライン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プログラムですが - 与えられた
find
とfindstr
を使用します。正規表現機能と同様に、構文は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)では、find
とfindstr
を使い、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
コマンドラインパラメータを使用して多くの機能を実行できるように、マルチリプライサープログラムを用意しました。コマンドラインの使い方は以下の通りです
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