Jak sugeruje tytuł, jaki jest najszybszy (dokładny) sposób znalezienia linii, które pliki pasują do określonego ciągu.
W szczególności szukam .cpp
i .h
plików.
Jak sugeruje tytuł, jaki jest najszybszy (dokładny) sposób znalezienia linii, które pliki pasują do określonego ciągu.
W szczególności szukam .cpp
i .h
plików.
Odpowiedzi:
Notepad ++ ma opcję „znajdź w plikach”, która znajduje się w menu „Wyszukaj”. Pozwoli ci to przeszukać wiele plików w folderze (możesz określić folder) i wyświetli również numery wierszy każdego pliku . Możesz przełączać, czy podfoldery i ukryte foldery są uwzględniane w wyszukiwaniu, a także umożliwia wyszukiwanie za pomocą \ t \ n itp. I wyszukiwanie wyrażeń regularnych, jeśli potrzebujesz.
Notepad ++ to edytor dla programistów Windows (nie IDE) i jest również Open Source.
(Zdaję sobie sprawę, że najprawdopodobniej słyszałeś o Notatniku ++, ale wymieniam go tutaj jako opcję, ponieważ nie byłeś świadomy tej konkretnej funkcji, a dla innych, którzy natkną się na ten wątek później.
Twoje zdrowie :)
Agent Ransack działa jak urok. Pobierz tutaj .
W systemach uniksowych ludzie najprawdopodobniej użyliby do tego grep, więc dlaczego by nie użyć Windows Grep?
Oto rozwiązanie Powershell:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString
-r
W gci
jest dla recurse, i oczywiście nie jest obowiązkowe, podobnie jak dwa filtry rozszerzeń plików. Przydatnym parametrem Select-String
jest to, -list
który zgłasza tylko pierwsze wystąpienie dopasowania w pliku, zamiast podawać każde jego wystąpienie w pliku.
Być może chcesz natychmiast otworzyć każdy plik, w którym znaleziono dopasowanie? Cóż, następująca niewielka zmiana powyższego jest bardzo przydatna, w zależności od domyślnego powiązania plików jako:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString -list | ii
-filter "*.cpp","*.h"
akceptujesz wiele rozszerzeń? Powinno to raczej brzmieć-include ("*.cpp","*.hpp")
podczas lokalizacji niektórych SW używam DocFetchera do wyszukiwania tych samych ciągów we wcześniej przetłumaczonych plikach. Jest darmowy i open source, ale najpierw musi utworzyć indeks. Po prostu spróbuj. :-)
Jeśli jesteś zadowolony z linii poleceń / z Linuksem. Czy mogę zasugerować zainstalowanie wersji grep dla systemu Windows?
cygwin jest dość poręcznym sposobem na uzyskanie tego i oferuje pełne środowisko Linux, z powłoką bash i terminalem rxvt. W przeciwnym razie, jeśli chcesz tylko narzędzia, które są gnuwin32, ale utkniesz z monitem Windows cmd.exe.
Microsoft faktycznie ma własną wersję narzędzi uniksowych do pobrania, ale wydawały się one dość powolne w porównaniu do portów GNU, kiedy je wypróbowałem. Zamierzają też złomować je za pomocą systemu Windows 8.
W ten sposób szukam ciągów tekstowych w rejestrze systemu Windows lub plików na moim komputerze z systemem Windows XP. Załóżmy, że chcę znaleźć ciąg „Enterprise” w zwykłym pliku tekstowym na dysku c:, a następnie zapisać dane wyjściowe w pliku o nazwie search_result.txt w folderze c: \ windows \ temp
Otwórz wiersz polecenia, a następnie wpisz:
findstr "Enterprise" c: *. txt> c: \ windows \ temp \ search_result.txt
W szukanym ciągu rozróżniana jest wielkość liter. „Przedsiębiorstwo” i „przedsiębiorstwo” nie znajdą tego samego ciągu.