Windows 7 için bir komut istemi grep eşdeğeri var mı ? Yani, bir komutun sonuçlarını filtrelemek istiyorum:
Bash kullanımı:
ls | grep root
Windows komut isteminden ne olurdu?
Windows 7 için bir komut istemi grep eşdeğeri var mı ? Yani, bir komutun sonuçlarını filtrelemek istiyorum:
Bash kullanımı:
ls | grep root
Windows komut isteminden ne olurdu?
Yanıtlar:
Findstr, istediğin gibi ses çıkarır. Her zaman Windows platformunda yaklaşık bir grep eşdeğeri olarak kullanıyorum.
Borular ile başka bir örnek :
C:\> dir /B | findstr /R /C:"[mp]"
findstr, regex modelinin alternatif içermemesidir.
findstr? Windows XP’den beri mi?
Birkaç olasılık var:
grepkomutunun portunu kullanın . Birkaç seçenek var. Genellikle bahsedilen GNUWin32 , cygwin ve unxutils . Daha az bilinen, ancak bazı yönlerden daha iyi, SFUA yardımcı program araç setinde , Windows 7 Ultimate sürümü ve Windows Server 2008 R2 ile birlikte gelen kutuda gelen UNIX Tabanlı Uygulamalar için Alt Sistemde çalışan araçlar . (Windows XP, bir yapabilirsiniz indirmek ve yüklemek Hizmetleri UNIX sürüm 3.5 için ). Bu araç komut satırı TUI araçları çok sayıda gelen mvve duhiç Korn ve C kabukları yoluyla, perlveawk. Hem x86-64 hem de IA64 lezzetlerinde ve x86-32'de gelir. Programlar, emülatör DLL'leri (örneğin cygwin1.dll) Win32 üzerinden birşeyler koymak yerine, Windows'a özgü uygun POSIX ortamında çalışır . Ve evet, alet takımında grepolduğu gibi bazı 300 kişi daha var.grepİnsanların yazdığı ve yayınladığı birçok yerel Win32 komutundan birini kullanın . Tim Charron, örneğin, değiştirilmiş bir GNU grep'in yerel bir Win32 sürümüne sahip . De vardır PowerGREP , Çıplak Grep , grepWin , AstroGrep ve dnGrep bunların hepsi GUI programları olmasına rağmen değil TUI programları.findve kullanın findstr. Sözdizimi, grepnormal ifade kabiliyetindeki gibi nottan farklıdır .Eğer PowerShell komutları izin kullanmak
PS C:\> Get-ChildItem | Select-String root
veya kısa
PS C:\> ls | sls root
Diğer adın slsyalnızca PowerShell sürüm 3.0 ile başlayarak tanımlandığını unutmayın. Daha az yazmak için bir takma ad ekleyebilirsiniz:
PS C:\> New-Alias sls Select-String
PowerShell komutunu doğrudan cmd'den çalıştırmak için,
C:\>powershell -command "ls | select-string root"
İlk revizyonunuzda MS-DOS yazdınız, FINDbildiğim kadarıyla sadece var . Ancak artık kullanılmayan eski bir işletim sistemi.
Windows NT komut isteminde (örneğin Win2K ve XP ve daha sonra kazanmak böylece örneğin win7, win10), kullanabilirsiniz findve findstrindirmek ve eğer GnuWin32 sonragrep
Temel farklar, findstr'nin bazı düzenli ifade desteğine sahip olmasıdır. Grep, düzenli ifadeleri en iyi şekilde destekler.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?ve findstr /?anahtarların ne yaptığını gösterir.
Gnuwin32'nin "paketleri" var. GnuWin32'yi indirirseniz, aşina olacağınız bir sürü temel yardımcı program için coreutils paketini öneririm, ancak grep, kendi paketi değildir.
Eklendi
GnuWin32'nin grep'i, en son kontrol ettiğimde eski. Cygwin'in grep'i bugüne kadar çok daha fazla. Ayrıca birçok kişinin * nix komutlarının pencerelerindeki portları yerine Sanal Makineler kullandığını da unutmayın.
Eğer kullanmak grepyerine findstr, UnxUtils'te tek bir .exedosya sürümü var , bu nedenle taşınabilir ve onu kurmanıza ya da Cygwin gibi bir şey kullanmanıza gerek yok.
.zipdosya .exedosyası. Tek küçük dezavantajı sürümleri biraz eski olmasıdır.
grepWindows sağlar: gnuwin32.sourceforge.net/packages/grep.htm
Chocolatey'i Windows'a yüklemeyi deneyebilir ve Gow aracını yükleyebilirsiniz . Bu size grepWindows'ta sağlayacaktır .
GowWindows’ta GNU’nun kısaltması. Windows'ta Unix komut satırı yardımcı programları sağlar.
Bash kullanımı
$ ls | grep root
Cmd kullanımı
> dir /b | findstr root
nerede /baçılımı b dizin ve dosya listesi vardır
/B, /Rve /Ccevabım verir iken OP, sormadın tam eşdeğeri
/bYapmaktır dirçıkış ile aynı lsçıktı. Eğer test ederseniz, farkı göreceksiniz. Yani tam olarak eşdeğer değil.
Hybrid Batch / JScript kodunu kullanarak grep için bir Windows alternatifi yazdım. Bunu yazdım çünkü GNU Win32 grep portundaki kaçış karakterlerini doğru bulmak gerçekten acı vericiydi. Bu sürüm, GNU sürümünün Windows'ta çalışmasını nasıl istediğinize benzer şekilde çalışır:
@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);
}
}
}
En son sürümü her zaman Gist sayfamda bulabilirsiniz .
Çok işlevli komut programı, birçok fonksiyonun komut satırı parametreleri kullanılarak gerçekleştirilebileceği şekilde hazırlanmıştır. Komut satırı kullanımı aşağıda görülmektedir:
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]
Tanıdık grepve diğer Linux komutlarınızı hala bu aracı UnxUtils'i indirerek kullanabilir ve PATHortam değişkeninize konum ekleyebilirsiniz
2.4.2fakat gnuwin32'nin bir tane daha var 2.5.4
Sadece yaklaşık 500 KB boyutunda ve aktif bir şekilde bakımı yapıldığı için busybox-w32 kullanmanızı öneririm .
Böylece sizin durumunuzda, komut isteminde bu:
busybox ls | busybox grep root
doskeyKomut isteminde, örneğin bir komut yapmak için toplu iş dosyası tarafından başlatılan komutları kullanabilirsiniz :
doskey ls="path\to\busybox.exe" ls $*
doskey grep="path\to\busybox.exe" grep $*
Sonra ls | grep rootkomut isteminde kullanabilirsiniz.
grepWindows ortamınıza en basitini eklemek istiyorsanız, c:\windows\system32bu komutu kullanarak küçük bir toplu komut dosyasına gidin ve ekleyin:
echo findstr %1 > grep.bat
Şimdi yapabilirsin
dir | grep notepad.exe
Bu gerçekten korkunç bir bok karışımı. Yani lsbu yazı açıklandığı gibi başka bir toplu komut dosyası ekleyin
echo dir %1 > %systemroot%\system32\ls.bat
Şimdi işler biraz tanıdık geliyor
ls | grep notepad
HTH
echo findstr %1 %2 %3 %4 %5 > %systemroot%\grep.cmd
Bu hızlı ve kirli bir eşdeğer olacak.
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