Narzędzia do wyszukiwania ciągów w plikach bez indeksowania [zamknięte]

170

Muszę zmienić niektóre parametry połączenia w niewiarygodnie starej, starszej aplikacji, a programiści, którzy ją stworzyli, pomyśleli, że dobrym pomysłem byłoby otynkowanie całej aplikacji ciągami połączeń w dowolnym miejscu.

Wyszukiwanie „bieżącego projektu” w programie Visual Studio jest niezwykle wolne i nie ufam wyszukiwarce Windows.

Jakie jest zatem najlepsze bezpłatne, nieindeksowane narzędzie do wyszukiwania tekstu? Wszystko, co powinno zrobić, to zwrócić listę plików, które zawierają żądany ciąg w folderze i jego podfolderach.

Używam systemu Windows 2003 Server.

kitsune
źródło
010 Editorprzeszukuje huuuge pliki w 0 sekund.
Morteza Ziyae
Depeche View bije wszystko inne na tej stronie. Jest kilka skrótów, które warto poświęcić kilka minut na przeczytanie pliku pomocy i nauczenie się. stahlworks.com/dev/depeche-view.html
BVernon
Używam tego również często, jednak zmusza cię to do kliknięcia każdego pliku wynikowego, aby zobaczyć pasującą zawartość w prawym okienku. Również zawartość pliku w prawym okienku nie jest powiększana (rozmiar czcionki jest za mały).
Meryan
To dobre pytanie dla inżynierii oprogramowania, ale offtopic w SO. Która witryna sieci SE to temat? Zobacz np. Pytania SE.SE dotyczące „bazy kodu wyszukiwania”. Powinniśmy przenieść to pytanie, aby można było je ponownie otworzyć!
smci
1
Zajrzyj do Wyszukiwarki zawartości plików w sklepie z aplikacjami (zastrzeżenie - jestem programistą). Może wyszukiwać w plikach tekstowych / źródłowych, ale także w plikach pdf, doc (x), xls (x), a nawet zeskanowanych plikach jpg / png - microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp
Geo Systems

Odpowiedzi:

60

Oryginalna odpowiedź

Windows Grep robi to naprawdę dobrze.

Edycja: program Windows Grep nie jest już obsługiwany ani udostępniany. Alternatywne łącze pobierania jest tutaj: Windows Grep - alternatywny

Aktualna odpowiedź

Visual Studio Code ma doskonałe możliwości wyszukiwania i zastępowania w plikach. Jest niezwykle szybki, obsługuje wyrażenia regularne i podgląd na żywo przed wymianą.

wprowadź opis obrazu tutaj

RedFilter
źródło
10
ss64.com/nt/findstr.html
JohnnyFromBF
10
Na moim komputerze (Windows 7) zawiesił się dwukrotnie. Spróbuję czegoś innego.
B. Clay Shannon
2
Jest stary, u mnie też się rozbił. Nawet jeśli nie jest idealny do niektórych bramek, grepWin jest lepszy imoh
Paolo
9
AstroGrep jest również szybki i nie ma go
Zorb
Działało dobrze dla mnie w systemie Windows 7 - bez awarii
w5m
364

Jestem fanem okna dialogowego Znajdź w plikach w Notepad ++ . Bonus : to nic nie kosztuje.

wprowadź opis obrazu tutaj

BQ.
źródło
Który niestety nie może - lub nie - przeszukiwać wszystkich plików Microsoft Word. Coś o różnicy między „.doc” a „.docm”, jak podejrzewam
Carl Witthoft
11
@CarlWitthoft .docm, podobnie jak .docx, .xlsmi .xlsxsą w rzeczywistości spakowanymi dokumentami XML.
Ian Boyd
1
działa dobrze w przypadku małych folderów z normalną liczbą plików, zawiesza się w przypadku dużych folderów z wieloma plikami, przynajmniej gdy używam laptopa. Nieco szybciej, gdy używasz potężnego komputera. Co więcej, podczas wyszukiwania nie można otworzyć żadnych innych plików.
Mohammed Joraid,
Znalazłem mój tekst. Jednak nie pozwolił mi wybrać w wynikach, które wartości zastąpić, a które zachować. Wszystko albo nic?
ofer.sheffer
5
Nie miałem pojęcia, że ​​jest to nawet opcja w notatniku ++. Świetne rozwiązanie, aby znaleźć brakujące pliki! Wydaje się jednak, że ma problemy z dużymi rozmiarami plików. Czasami pojawia się błąd „plik jest zbyt duży, aby go otworzyć”.
John August
167

Istnieje również wbudowany program systemu Windows o nazwie, za findstr.exepomocą którego można wyszukiwać w plikach.

>findstr /s "provider=sqloledb" *.cs
JohnnyFromBF
źródło
3
Proste i wydajne!
Markus Fantone
Jest to znacznie szybsze niż Eksplorator Windows i faktycznie znalazłem tekst, którego szukałem, podczas gdy użycie Eksploratora Windows nie przyniosło mi wyników wyszukiwania. Dzięki.
mbomb007
1
Jak dla mnie najlepsza odpowiedź na ten temat, ponieważ nie trzeba niczego instalować. W moim przypadku musiałem uzupełnić dodając kilka argumentów, ponieważ jest zbyt dużo informacji, aby pojawić się na ekranie. Argument / M zawiera tylko nazwę pliku zawierającą informacje, których szukałem. Aby uzyskać dostęp do podręcznika polecenia findstr, wpisz „findstr /?” w konsoli.
Alexandre Ribeiro
Jest to świetne narzędzie, ale wydaje się, że nie może czytać znaków cyrylicy w nazwach plików. Na przykład:FINDSTR: Cannot open ???????????.txt
Artem Russakovskii
1
findstr nie obsługuje tekstu UTF16.
David Bremner,
34

Lubię AstroGrep. Wyniki są wyświetlane na liście. Kliknięcie wiersza pokazuje całą linię jako podgląd podświetlający trafienie. Wydaje się, że jest dość szybki, chudy i darmowy. Przetestowano w systemach Windows 7, 8, 10 i Windows Server 2008 R2. Zezwala na wyrażenia regularne.

Najnowszy zrzut ekranu AstroGrep

AstroGrep to narzędzie do wyszukiwania plików GUI systemu Microsoft Windows (grep). Jego funkcje obejmują wyrażenia regularne, wszechstronne opcje drukowania, przechowuje ostatnio używane ścieżki i ma funkcję „kontekstu”, która jest bardzo przyjemna do oglądania kodu źródłowego

Odniesienie: AstroGrep

Anytoe
źródło
7
Poza wszystkimi innymi wymienionymi tutaj, jest to jedyny, który pozwala określić wzorce wykluczeń dla folderów. Bardzo pomocne przy próbie pomijania folderów, takich jak node_moduleslub bower_components.
Mrchief
1
Bardzo dobre oprogramowanie, szybkie, konfigurowalne i pokazujące pliki wraz z powiązanym kontekstem
HanniBaL90
1
A „szybko” zasługuje na drugą wzmiankę ...self == happy
cssyphus
9

Wyszukiwanie Visual Studio w folderach jest zdecydowanie najszybsze, jakie znalazłem.

Uważam, że inteligentnie przeszukuje tylko pliki tekstowe (niebinarne), a kolejne wyszukiwania w tym samym folderze są niezwykle szybkie, w przeciwieństwie do innych narzędzi (prawdopodobnie pliki tekstowe mieszczą się w pamięci podręcznej dysku systemu Windows).

VS2010 na zwykłym dysku twardym, bez dysku SSD, zajmuje 1 minutę, aby przeszukać folder 20 GB z pomieszanymi plikami 26k, kodem źródłowym i plikami binarnymi. Przeszukiwane jest 15 tys. Plików - pozostałe są prawdopodobnie pomijane, ponieważ są plikami binarnymi. Kolejne wyszukiwania w tym samym folderze są rzędu sekund (do momentu wyrzucenia rzeczy z pamięci podręcznej).

Następnym najbliższym, jaki znalazłem dla tego samego folderu, był grepWin. Około 3 minuty. Wykluczyłem pliki większe niż 2000 KB (domyślnie). Wydaje się, że ustawienie „Uwzględnij pliki binarne” nie przyspiesza wyszukiwania, wygląda na to, że pliki binarne są nadal poruszane (błąd?), Ale nie pojawiają się w wynikach wyszukiwania. Kolejne wyszukiwania zajmują te same 3 minuty - nie można wykorzystać pamięci podręcznej dysku twardego. Jeśli ograniczę się do plików mniejszych niż 200k, początkowe wyszukiwanie trwa 2,5 minuty, a kolejne wyszukiwania są rzędu sekund, mniej więcej tak szybko, jak VS - w pamięci podręcznej.

Agent Ransack i FileSeek działają bardzo wolno w tym folderze, około 20 minut, z powodu przeszukiwania wszystkiego, w tym gigantycznych wielogigabajtowych plików binarnych. Według Resource Monitor przeszukują z szybkością około 10-20 MB na sekundę.

AKTUALIZACJA: Ransack agenta można ustawić tak, aby przeszukiwał pliki o określonych rozmiarach, a przy odcięciu <200 KB czas na nowe wyszukiwanie wynosi 1: 15 min i 5 sekund przy kolejnych wyszukiwaniach. Szybszy niż grepWin i ogólnie równie szybki jak VS. To całkiem fajne, jeśli chcesz zachować kilka wyszukiwań w zakładkach i nie chcesz zanieczyszczać listy ostatnio przeszukiwanych folderów VS, a chcesz zachować możliwość wyszukiwania plików binarnych, czego VS nie chce robić. Agent Ransack tworzy również pozycję menu kontekstowego eksploratora, więc można ją łatwo uruchomić z folderu. To samo co grepWin, ale ładniejszy interfejs użytkownika i szybszy.

Moja nowa konfiguracja wyszukiwania to Ransack agenta dla zawartości i Wszystko dla nazw plików (świetne narzędzie, natychmiastowe wyniki!).

Steve
źródło
3

Jeśli nie chcesz instalować narzędzi innych niż Microsoft, pobierz STRINGS.EXE z Microsoft Sysinternals i wykonaj procedurę podobną do tej:

@echo off
if '%1' == '' goto NOPARAM
if '%2' == '' goto NOPARAM
if not exist %1 goto NOFOLDER

echo ------------------------------------------
echo - %1 : folder
echo - %2 : string to be searched in the folder
echo - PLEASE WAIT FOR THE RESULTS ...
strings -s %1\* | findstr /i %2 > grep.txt
notepad.exe grep.txt

goto END

:NOPARAM rem - input command not correct
echo ====================================
echo Usage of GREP.CMD:
echo   Grep "SearchFolder" SearchString
echo Please specify all parameters
echo ====================================
goto END

:NOFOLDER
echo Folder %1 does not exist
goto END

:END rem - exit
FIBA
źródło