Odpowiedzi:
Możesz użyć grep
polecenia z terminala:
grep -r word *
To polecenie znajdzie wszystkie wystąpienia „słowa” we wszystkich plikach w bieżącym katalogu (lub podkatalogach).
--color=auto
flaga może to rozwiązać.
Zainstaluj narzędzie wyszukiwania gnome.
sudo apt-get install gnome-search-tool
Otwórz Search for files
wybierz Select More Options
i
which gnome-search-tool
= /usr/bin/gnome-search-tool
... ale kiedy otworzę opcję wyszukiwania w gnome (Idź, wyszukaj pliki ...) nie ma opcji dla „Wybierz więcej opcji”
gnome-search-tool
i jestem pewien, że to zobaczysz.
Oto przegląd różnych metod przeszukiwania plików pod kątem określonych ciągów tekstowych, z kilkoma dodanymi opcjami specjalnie do pracy tylko z plikami tekstowymi i ignorowania plików binarnych / aplikacji.
Należy jednak zauważyć, że wyszukiwanie słowa może być nieco skomplikowane, ponieważ większość narzędzi do dopasowywania wierszy spróbuje znaleźć słowo w dowolnym miejscu linii. Jeśli mówimy o słowie jako ciągu, który może pojawić się na początku lub na końcu wiersza, sam w wierszu lub otoczony spacjami i / lub znakami interpunkcyjnymi - wtedy potrzebujemy wyrażeń regularnych, a zwłaszcza tych, które przychodzą z Perla. Oto, na przykład, możemy użyć -P
w grep
celu wykorzystania wyrażeń regularnych Perl go otaczają.
$ printf "A-well-a don't you know about the bird?\nWell, everybody knows that the bird is a word" | grep -noP '\bbird\b'
1:bird
2:bird
$ grep -rIH 'word'
-r
do wyszukiwania rekurencyjnego w dół z bieżącego katalogu-I
ignorować pliki binarne-H
wypisać nazwę pliku, w którym znaleziono dopasowanieNadaje się tylko do wyszukiwania.
$ find -type f -exec grep -IH 'word' {} \;
find
wykonuje część wyszukiwania rekurencyjnego-I
opcja polega na ignorowaniu plików binarnych-H
wypisać nazwę pliku, w którym znajduje się liniadobre podejście do łączenia z innymi poleceniami w podpowłoce, takimi jak:
$ find -type f -exec sh -c 'grep -IHq "word" "$1" && echo "Found in $1"' sh {} \;
#!/usr/bin/env perl
use File::Find;
use strict;
use warnings;
sub find_word{
return unless -f;
if (open(my $fh, $File::Find::name)){
while(my $line = <$fh>){
if ($line =~ /\bword\b/){
printf "%s\n", $File::Find::name;
close($fh);
return;
}
}
}
}
# this assumes we're going down from current working directory
find({ wanted => \&find_word, no_chdir => 1 },".")
To jest „bash way”. Nie jest to idealny, prawdopodobnie nie ma dobrego powodu, aby używać tego, gdy masz grep
lub perl
instalujesz.
#!/usr/bin/env bash
shopt -s globstar
#set -x
grep_line(){
# note that this is simple pattern matching
# If we wanted to search for whole words, we could use
# word|word\ |\ word|\ word\ )
# although when we consider punctuation characters as well - it gets more
# complex
case "$1" in
*word*) printf "%s\n" "$2";;
esac
}
readlines(){
# line count variable can be used to output on which line match occured
#line_count=1
while IFS= read -r line;
do
grep_line "$line" "$filename"
#line_count=$(($line_count+1))
done < "$1"
}
is_text_file(){
# alternatively, mimetype command could be used
# with *\ text\/* as pattern in case statement
case "$(file -b --mime-type "$1")" in
text\/*) return 0;;
*) return 1;;
esac
}
main(){
for filename in ./**/*
do
if [ -f "$filename" ] && is_text_file "$filename"
then
readlines "$filename"
fi
done
}
main "$@"
Pytanie jest dość stare ... w każdym razie ... obecnie (2016) istnieje aplikacja gnome o nazwie tracker
(można ją znaleźć w repozytoriach ubuntu), którą można zainstalować w celu wyszukiwania tekstu w plikach (wypróbowano odt-ods-odp-pdf) . Pakiet zawiera 4 inne pakiety do zainstalowania (tracker-ekstrakt, tracker-gui, tracker-miner-fs, tracker-utils) Namastè :)
Tak, wiem, że szukałeś aplikacji GUI i to jest stary post, ale może to komuś pomoże. Znalazłem ack-grep. Najpierw zainstaluj go, sudo apt-get install ack-grep
a następnie uruchom polecenie ack-grep what_you_looking_for
w katalogu, w którym chcesz wyszukać. To pokazuje wszystkie pliki, w których znajduje się tekst, a także pokazuje podgląd tych plików. I to jest dla mnie bardzo ważne.
Jeszcze prostsze i szybsze jest „srebrne wyszukiwanie” sudo apt-get install silversearcher-ag
. Spójrz na https://github.com/ggreer/the_silver_searcher, aby dowiedzieć się, dlaczego jest to lepsze niż między innymi * ack.
grep -r word .
.