nie mylić ms-dos z wierszem polecenia. + użycie find i findstr, a nawet grep, dla Windows .. z pewnością można łatwo znaleźć za pomocą szybkiego wyszukiwania. istnieją nawet tabele równoważnych poleceń w systemie Linux i Windows. również twój przykład bash nie jest nawet specyficzny dla bash .. tak sądzę, * nix OS.
barlop
Odpowiedzi:
280
Findstr brzmi jak chcesz. Cały czas używam go jako przybliżonego grepa na platformie Windows.
Tak, chyba tego właśnie szukam. Rozumiem, że prawdopodobnie istnieją ograniczenia. Dam temu szansę.
chrisjlee
18
dlaczego nie mogliby tak nazwać grep!
Victor Grazi
6
@VictorGrazi Tak naprawdę zrobili na początku, zobacz ten artykuł . Pierwotnie nazywał się qgrep - ale później został przemianowany.
Zitrax
3
Dużym problemem findstrjest to, że wzorzec wyrażenia regularnego może nie zawierać alternatyw.
Wolf
Pytanie dotyczy systemu Windows 7, ale jakie inne wersje systemu Windows mają findstrdomyślnie? Od Windows XP ?
Peter Mortensen
44
Istnieje kilka możliwości:
Użyj portu greppolecenia Unix . Istnieje kilka opcji. Często wymieniane są GNUWin32 , cygwin i unxutils . Mniej znane, ale pod pewnymi względami lepsze, są narzędzia z zestawu narzędzi SFUA , które działają w Podsystemie aplikacji dla systemu UNIX, który jest dostępny w zestawie z Windows 7 Ultimate Edition i Windows Server 2008 R2. (W systemie Windows XP można pobrać i zainstalować usługi dla systemu UNIX w wersji 3.5 .) Ten zestaw narzędzi zawiera dużą liczbę narzędzi TUI wiersza polecenia, od mvi dupoprzez powłoki Korna i C, do perliawk. Występuje zarówno w wersjach x86-64 i IA64, jak i x86-32. Programy działają w natywnym środowisku POSIX systemu Windows, a nie z emulatorowymi bibliotekami DLL (np. cygwin1.dll) Nakładającymi warstwy na Win32. I tak, zestaw narzędzi grep, a także około 300 innych.
W swojej wczesnej wersji napisałeś MS-DOS, jest tylko FINDtyle, o ile wiem. Ale to starożytny system operacyjny, który nie jest już używany.
W wierszu polecenia systemu Windows NT (np Win2K i wygrać XP i nowszych, tak np win7, win10), można użyć finda findstri jeśli pobrać GnuWin32 następniegrep
Podstawowe różnice polegają na tym, że findstr obsługuje pewne wyrażenia regularne . Grep najlepiej obsługuje wyrażenia regularne.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?i findstr /?pokazuje, co robią przełączniki.
Gnuwin32 ma „pakiety”. Jeśli pobierasz GnuWin32, proponuję pakiet coreutils dla szeregu podstawowych przydatnych narzędzi, które znasz, ale grep nie jest w tym pakiecie.
Dodany
Grep GnuWin32, kiedy ostatnio sprawdzałem, jest stary. Grep Cygwina jest znacznie bardziej aktualny. Należy również pamiętać, że wiele osób używa maszyn wirtualnych zamiast portów Windows poleceń * nix.
Jeśli wolisz używać grepzamiast tego findstr, .exew UnxUtils jest jedna wersja pliku , więc jest przenośna i nie trzeba jej instalować ani używać czegoś takiego jak Cygwin.
@ użytkownik nieznany dobrze, na przykład komenda unxutils sed jest starsza i nie obsługuje \ d np. \ d22, aby podać cytat. Starszy wget może nie pobrać strony nowszej, a jeśli poprosisz o wsparcie, może poprosić o uzyskanie najnowszej, ponieważ może to rozwiązać niektóre problemy. Naprawdę stary grep bez wątpienia nie będzie miał poziomu obsługi
wyrażeń
3
Możesz spróbować zainstalować Chocolatey w systemie Windows, a następnie zainstalować narzędzie Gow . Zapewni to grepw systemie Windows.
Gowskrót od GNU w systemie Windows. Zapewnia uniksowe narzędzia wiersza poleceń w systemie Windows.
Jest to menedżer pakietów, podobny do apt-get, ale dla systemu Windows. Ma swoją nazwę, ponieważ deweloper oparł ją na NuGet, który jest menedżerem pakietów dla studia wizualnego, i to brzmi jak samorodek (jak w samorodku kurczaka), więc pomyślał, że będzie „zabawny” lub „sprytny” i zadzwoni jego program Chocolatey NuGet. Słyszałem o tym na podcastie, z którym przeprowadził wywiad. Gow można również pobrać niezależnie
barlop
1
Jestem nowy w Gow, po kilku dniach użytkowania mogę zaświadczyć, że bardzo mi się podoba - jest lepszy niż wszystkie starsze porty narzędzi UNIX, z których wcześniej korzystałem.
Radim Cernej
@RadimCernej Twój komentarz nie jest przydatny, chyba że podasz, jak myślisz, że jest lepszy.
barlop
@barlop: Odkąd napisałem komentarz z stycznia 2016 roku, stopniowo i całkowicie przestawiłem się na Gow. Do tej pory żadnych błędów, ma wszystkie narzędzia, których potrzebuję / używam, ścieżka jest wyprowadzana w formacie Microsoft (dzięki czemu łatwo kopiować / wklejać do innych programów). Gow jest na tyle nieinwazyjny (łatwy do zainstalowania i usunięcia), że zdecydowanie zalecam przetestowanie go.
To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill
@DavidPostill: To szybkie rozwiązanie dla użytkowników „TL; DR” (takich jak ja)
vladkras
To nie jest usprawiedliwienie dla dodania odpowiedzi, która nie wnosi nic nowego. W każdym razie zaakceptowana odpowiedź zawsze pojawi się pierwsza, więc zostanie przeczytana przed twoją.
DavidPostill
@DavidPostill, nie przejmuj się, ale zaakceptowana odpowiedź zawiera wiele nadmiernych i niewyjaśnionych kluczy /B, /Ra /COP nie pytał o to, podczas gdy moja odpowiedź daje dokładny odpowiednik
vladkras
Chodzi o /bto, aby dirwynik był taki sam jak lswynik. Jeśli go przetestujesz, zobaczysz różnicę. Więc to nie jest dokładny odpowiednik.
DavidPostill
2
Napisałem alternatywę dla systemu Windows dla grep za pomocą kodu Hybrid Batch / JScript. Napisałem to, ponieważ uzyskanie znaków ucieczki bezpośrednio w porcie grep GNU Win32 było prawdziwym bólem. Ta wersja działa o wiele bardziej jak chcesz, aby wersja GNU działała w systemie Windows:
Przygotowano program wielu zamienników, aby można było wykonywać wiele funkcji przy użyciu parametrów wiersza poleceń. Użycie wiersza poleceń jest widoczne poniżej:
Odpowiedzi:
Findstr brzmi jak chcesz. Cały czas używam go jako przybliżonego grepa na platformie Windows.
Kolejny przykład z rurami:
źródło
findstr
jest to, że wzorzec wyrażenia regularnego może nie zawierać alternatyw.findstr
domyślnie? Od Windows XP ?Istnieje kilka możliwości:
grep
polecenia Unix . Istnieje kilka opcji. Często wymieniane są GNUWin32 , cygwin i unxutils . Mniej znane, ale pod pewnymi względami lepsze, są narzędzia z zestawu narzędzi SFUA , które działają w Podsystemie aplikacji dla systemu UNIX, który jest dostępny w zestawie z Windows 7 Ultimate Edition i Windows Server 2008 R2. (W systemie Windows XP można pobrać i zainstalować usługi dla systemu UNIX w wersji 3.5 .) Ten zestaw narzędzi zawiera dużą liczbę narzędzi TUI wiersza polecenia, odmv
idu
poprzez powłoki Korna i C, doperl
iawk
. Występuje zarówno w wersjach x86-64 i IA64, jak i x86-32. Programy działają w natywnym środowisku POSIX systemu Windows, a nie z emulatorowymi bibliotekami DLL (np.cygwin1.dll
) Nakładającymi warstwy na Win32. I tak, zestaw narzędzigrep
, a także około 300 innych.grep
poleceń Win32 , które ludzie napisali i opublikowali. Tim Charron ma na przykład natywną wersję Win32 zmodyfikowanego grepu GNU . Istnieją również PowerGREP , Bare Grep , grepWin , AstroGrep i dnGrep , chociaż są to wszystkie programy GUI, a nie programy TUI.find
ifindstr
.grep
Uwaga: składnia jest inna niż w przypadku wyrażeń regularnych.źródło
Jeśli dozwolone są polecenia PowerShell , użyj
lub krótki
Należy pamiętać, że alias
sls
jest definiowany dopiero od wersji PowerShell 3.0. Możesz dodać alias, aby mniej pisać:Aby uruchomić polecenie PowerShell bezpośrednio z cmd, użyj
źródło
W swojej wczesnej wersji napisałeś MS-DOS, jest tylko
FIND
tyle, o ile wiem. Ale to starożytny system operacyjny, który nie jest już używany.W wierszu polecenia systemu Windows NT (np Win2K i wygrać XP i nowszych, tak np win7, win10), można użyć
find
afindstr
i jeśli pobrać GnuWin32 następniegrep
Podstawowe różnice polegają na tym, że findstr obsługuje pewne wyrażenia regularne . Grep najlepiej obsługuje wyrażenia regularne.
find /?
ifindstr /?
pokazuje, co robią przełączniki.Gnuwin32 ma „pakiety”. Jeśli pobierasz GnuWin32, proponuję pakiet coreutils dla szeregu podstawowych przydatnych narzędzi, które znasz, ale grep nie jest w tym pakiecie.
Dodany
Grep GnuWin32, kiedy ostatnio sprawdzałem, jest stary. Grep Cygwina jest znacznie bardziej aktualny. Należy również pamiętać, że wiele osób używa maszyn wirtualnych zamiast portów Windows poleceń * nix.
źródło
Jeśli wolisz używać
grep
zamiast tegofindstr
,.exe
w UnxUtils jest jedna wersja pliku , więc jest przenośna i nie trzeba jej instalować ani używać czegoś takiego jak Cygwin.źródło
.zip
plik.exe
plików. Jedynym minusem jest to, że wersje są nieco stare.grep
system Windows: gnuwin32.sourceforge.net/packages/grep.htmMożesz spróbować zainstalować Chocolatey w systemie Windows, a następnie zainstalować narzędzie Gow . Zapewni to
grep
w systemie Windows.Gow
skrót od GNU w systemie Windows. Zapewnia uniksowe narzędzia wiersza poleceń w systemie Windows.źródło
Użyj Bash
Użycie Cmd
gdzie
/b
oznacza b to lista katalogów i plikówźródło
/B
,/R
a/C
OP nie pytał o to, podczas gdy moja odpowiedź daje dokładny odpowiednik/b
to, abydir
wynik był taki sam jakls
wynik. Jeśli go przetestujesz, zobaczysz różnicę. Więc to nie jest dokładny odpowiednik.Napisałem alternatywę dla systemu Windows dla grep za pomocą kodu Hybrid Batch / JScript. Napisałem to, ponieważ uzyskanie znaków ucieczki bezpośrednio w porcie grep GNU Win32 było prawdziwym bólem. Ta wersja działa o wiele bardziej jak chcesz, aby wersja GNU działała w systemie Windows:
W tym celu możesz zawsze znaleźć najnowszą wersję na mojej stronie Gist .
źródło
http://www.multireplacer.com
Przygotowano program wielu zamienników, aby można było wykonywać wiele funkcji przy użyciu parametrów wiersza poleceń. Użycie wiersza poleceń jest widoczne poniżej:
źródło
Nadal możesz używać znanych
grep
i innych poleceń systemu Linux, pobierając to narzędzie UnxUtils i dodając lokalizację doPATH
zmiennej środowiskowejźródło
2.4.2
ale gnuwin32 ma później2.5.4
Sugerowałbym użycie busybox-w32 , ponieważ ma tylko około 500 KB i jest aktywnie utrzymywany.
W twoim przypadku w wierszu polecenia jest to:
Możesz użyć
doskey
w wierszu polecenia uruchomienia pliku wsadowego, aby wykonać polecenie, takie jak:Następnie możesz użyć
ls | grep root
w wierszu polecenia.źródło
Jeśli chcesz dodać najprostszy
grep
do środowiska Windows, przejdź doc:\windows\system32
i dodaj mały skrypt wsadowy za pomocą tego polecenia:Teraz możesz
co jest naprawdę przerażającą mieszanką gówna. Dodaj więc kolejny skrypt wsadowy,
ls
jak wyjaśniono w tym pościeTeraz wszystko wygląda trochę znajomo
HTH
źródło
To będzie szybki i brudny odpowiednik.
źródło