Jak wyszukiwać ciągi znaków w plikach w folderze?


98

Czy jest jakieś narzędzie do wyszukiwania łańcucha w plikach ASCII, aby uniknąć przeszukiwania wiersza poleceń?

Jak wyszukać w wierszu polecenia, na przykład ciąg „test” we wszystkich plikach w katalogu /var/x/?


15
Naprawdę masz na myśli bez używania wiersza poleceń? Ponieważ najlepszym narzędziem do tego pozostaje grep ...
alci

Na CLI Silver Searcher prawdopodobnie robi lepszą robotę.
Pablo A

Odpowiedzi:


78

Możesz użyć searchmonkey. Narzędzie jest dostępne w repozytoriach, więc możesz po prostu

sudo apt-get install searchmonkey

Z drugiej strony, wyszukiwanie wiersza poleceń za pomocą grep jest naprawdę przeznaczone do tego ...

Oto zrzut ekranu z searchmonkey

wprowadź opis zdjęcia tutaj


rozbił się z powodu zbyt dużego obciążenia :(
WiredIn

1
miałem problemy z searchmonkey. Nie jest godny zaufania w tym sensie, że pozwala na poślizgnięcie się wielu zdarzeń
Tony Gil 14'18

jak uruchomić „searchmonkey” z GUI? po zainstalowaniu za pomocą wiersza poleceń, wolałbym nie używać wiersza poleceń
Echeban

153

Zakładam, że twoje pierwsze pytanie dotyczy GUI jako alternatywy dla greppolecenia. Nie mogę ci w tym pomóc, zawsze uważam, że linia poleceń jest bardzo skuteczna.

Jeśli chodzi o wiersz poleceń, spróbuj

grep "test" /var/x/*

Jeśli chcesz przeszukiwać rekurencyjnie (tj. Nie tylko w /var/x/, ale także w jego podkatalogach), rób to

grep -R "test" /var/x/

Aby uniknąć grepowania plików, które grep uważa za binarne, użyj -Iopcji:

grep -I "test" /var/x/

Jeśli grep uważa, że ​​plik jest binarny (na podstawie kilku pierwszych bajtów pliku), zakłada, że ​​nie pasuje, zamiast przechodzić przez cały plik.


1
Czy to zadziała, jeśli folder zawiera pliki inne niż ascii?
Anwar

1
Cóż, grep będzie także spróbować wyszukać ciąg znaków w pliku binarnego, i poinformuj jeśli pasuje:Binary file file.jpg matches
styczeń

1
@ Stycznia Kiedy plik binarny jest odczytywany jako tekst, często ma bardzo długie „linie” (ponieważ znak lub sekwencja znaków, które zostałyby zinterpretowane w celu oznaczenia końca linii, mogą nie pojawiać się długo lub nigdy). W zależności od sposobu implementacji narzędzia wyszukiwania tekstu może to powodować problemy z wydajnością, jeśli każda „linia” zostanie w pełni odczytana do pamięci, a następnie sprawdzona, czy pasuje do szukanego ciągu (co jest rozsądnym sposobem na grepzakodowanie, chociaż I nie wiem, czy Ubuntu grepjest napisane w ten sposób).
Eliah Kagan

1
„grep -i” dla wyszukiwania bez rozróżniania wielkości liter
Czarek Tomczak

3
Powinien nastąpić *po ostatnim cięciu na ścieżce lub grep nie wydaje się wykonywać żadnej pracy w 14.04
DavidScherer

20

Możesz użyć regexxer , jest to świetne narzędzie do wyszukiwania / zamiany GUI dla wyrażeń regularnych.

możesz pobrać przez:

sudo apt-get install regexxer

wprowadź opis zdjęcia tutaj


jest super szybki, ale problemy, które mam z tą aplikacją, to: 1. nie ma trybu tylko do odczytu, więc niczego przypadkowo nie zastępuję ani nie usuwam 2. pokazuje tekst, ale nie przechodzi do określonego linia, którą dopasował wzór. (Przewinąłem około 2000 wierszy kodu, aby znaleźć to, po czym
zmieniłem

6

Wypróbuj Recoll, najlepszy GUI, jakiego kiedykolwiek używałem. Aby zainstalować recoll we wszystkich obecnie obsługiwanych wersjach Ubuntu, otwórz terminal i wpisz:

sudo apt install recoll

Najpierw potrzebuje trochę czasu, aby zaindeksować pliki (możesz zdefiniować ścieżkę czarnej listy, rozszerzenia lub mime).


Mogę potwierdzić, że Recoll to zupełnie inny świat w odniesieniu do gnome-search-toollub search-monkey. Korzysta z Xapian, dzięki czemu jest w stanie sprawdzać i indeksować dokumenty słowne (zarówno .doc, jak i .docx), pliki pdf, foldery poczty itp.
Avio

Uh, jest dostępny poprzez debpacking ( sudo apt install recoll) i wykonuje swoją pracę tam, gdzie zawodzi nawet grep, np. Z dokumentami .docx skompresowanymi kompresją pkzip.
Avio

Uwaga, która recollwymaga najpierw indeksu budynku.
Yrogirg

5

Możesz użyć greppolecenia z terminala:

grep -r string *

To polecenie znajdzie wszystkie wystąpienia „ciągu” we wszystkich plikach w bieżącym katalogu (lub podkatalogach).

W przypadku ukrytych plików możesz użyć:

grep -r string ..


2

Niestety, grep ma bardzo kiepską pracę w wyszukiwaniu plików Word (.doc), ale możesz przesłać wyjście catdoc do grep. Nie jestem programistą, ale ten mały skrypt działa dla mnie dobrze:

#!/bin/bash
export GREP_OPTIONS='--color=auto'
echo -e "\n
Welcome to scandocs. This will search .doc (NOT .docx) files in this directory for a given string. \n
Type in the text string you want to find... \n"
read response
find . -name "*.doc" | 
while read i; do catdoc "$i" | 
grep -iH --label="$i" "$response"; done

Wszystkie ulepszenia i sugestie są mile widziane!


1
To pytanie dotyczyło aplikacji graficznych i zwykłych plików tekstowych. Nie jestem pewien, co grepi .docmają do czynienia z pytaniem.
Andrea Corbellini,

Wydaje się OK, zobacz szczegółową odpowiedź ze stycznia na temat grep.
aquaherd

2

Właśnie wypuściłem proste narzędzie do wykonania tej pracy. Myślana głównie dla programistów, ma (unikalną?) Cechę otwierania kilku plików w tym samym oknie. Prezentuje wyniki w przeglądarce za pomocą edytora Ace (zalecane!) Lub HTML textarea. Jest to narzędzie oparte na Javie, więc działa zarówno w systemie Windows, jak i Linux.

Sprawdź to!

https://sourceforge.net/projects/queacetu.gastona.p/


1

na https://askubuntu.com/a/1141367/47073

Możesz użyć mate-search-tool, czyli to samo, co gnome-search-toolzostało usunięte. Miałem problemy z kluczem wyszukiwania, brakowało niektórych wyników i było powolne, nie polecam.

Aby zainstalować mate-search-tool:

sudo apt install mate-utils
mate-search-tool

0

Możesz użyć opcji Sublime Text Find in Files z Findmenu, aby wyszukać ciągi znaków wewnątrz plików z folderu.

Aby zainstalować Sublime Text 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Możesz również zastosować się do tego pytania, aby poznać inne możliwe sposoby instalacji Sublime na Ubuntu .

Aby wyszukać we wszystkich plikach ciąg znaków z folderu w Sublime Text , możesz wykonać to pytanie, aby uzyskać bardziej przejrzyste odpowiedzi.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.