Muszę zrobić rekurencyjny grep w Windows, coś takiego w Unix / Linux:
grep -i 'string' `find . -print`
lub bardziej preferowana metoda:
find . -print | xargs grep -i 'string'
Utknąłem z tylko cmd.exe, więc mam tylko wbudowane polecenia systemu Windows. Niestety nie mogę zainstalować Cygwin ani narzędzi innych firm, takich jak UnxUtils na tym serwerze. Nie jestem nawet pewien, czy mogę zainstalować PowerShell. Wszelkie sugestie dotyczące używania tylko wbudowanych funkcji cmd.exe (Windows 2003 Server)?
windows
command-line
grep
Andy White
źródło
źródło
grep -i 'string' -R .
które, jak sugeruje @NathanFellman, pozwala uniknąć problemu zbyt długich poleceń.Odpowiedzi:
findstr
potrafi wyszukiwać rekurencyjnie (/ S) i obsługuje niektóre warianty składni wyrażeń regularnych (/ R).źródło
Parametry mają następujące znaczenie:
s
= rekurencyjnyp
= pomiń znaki niedrukowalnei
= wielkość liter nie ma znaczenian
= drukuj numery liniiA ciąg do wyszukania to bit, po którym wstawisz cudzysłowy
/c:
źródło
spin
? Czy to wiersz tekstu do znalezienia? I czy do określenia plików nie użyto / g lub / f? Co z kwadratowymi nawiasami klamrowymi?findstr /?
wyjaśnia każdy parametr. s = rekurencyjny, p = pomiń znaki niedrukowalne, i = nie rozróżnia wielkości liter, n = drukuj numery linii. Niekoniecznie potrzebujesz ich wszystkich, ale je lubię ispin
łatwo je zapamiętać. Ciąg do wyszukania to bit, po którym wstawisz cudzysłowy/c:
./?
, ale tak naprawdę nie wiedziałem, że używane są modyfikatory/spin
. Myślałem, że były używane/s/p/i/n
./
s. To jest jeden. Nie wszystkie pozwalają na to. Wiesz, cmd jest bardzo wyjątkowy.Właśnie przeszukałem tekst za pomocą następującego polecenia, w którym wymieniono wszystkie nazwy plików zawierające mój określony „tekst wyszukiwania”.
źródło
Polecam naprawdę świetne narzędzie:
narzędzia natywnego unixa:
Po prostu rozpakuj je i umieść ten folder w zmiennej środowiskowej PATH i voila! :)
Działa jak urok, a jest o wiele więcej niż tylko grep;)
źródło
Rekurencyjne wyszukiwanie
import
słowa wsrc
folderze:źródło
źródło
Select-String
działało najlepiej dla mnie. Wszystkie inne wymienione tutaj opcje, takie jakfindstr
, nie działały z dużymi plikami.Oto przykład:
Uwaga : Wymaga Powershell
źródło
Jeśli masz zainstalowany Perl, możesz skorzystać z ack , dostępnego pod adresem http://beyondgrep.com/ .
źródło