Você pode usar o comando grep
do terminal:
grep -r word *
Este comando encontrará todas as ocorrências de "word" em todos os arquivos no diretório atual (ou sub-diretórios).
Eu quero encontrar um arquivo de texto no meu disco rígido que contenha uma palavra específica.
Antes do Ubuntu 12.4 Eu costumava iniciar no traço um aplicativo, acho que era chamado de "Pesquisar por arquivo ...", cujo ícone era uma lupa. Não consigo mais encontrar esse aplicativo simples. / p>
Você pode usar o comando grep
do terminal:
grep -r word *
Este comando encontrará todas as ocorrências de "word" em todos os arquivos no diretório atual (ou sub-diretórios).
Instale o gnome-search-tool.
sudo apt-get install gnome-search-tool
Abra Search for files
select Select More Options
e
A pergunta é bem antiga ... de qualquer forma ...
atualmente (2016) existe um aplicativo gnome chamado tracker
(você pode encontrá-lo nos repositórios do ubuntu) que pode ser instalado para procurar texto dentro dos arquivos (tentado odt-ods-odp-pdf).
O pacote vem com 4 outros pacotes a serem instalados (tracker-extract, tracker-gui, tracker-miner-fs, tracker-utils)
Namastè:)
Sim, eu sei que você estava procurando por um aplicativo gui e este é um post antigo, mas talvez isso ajude alguém.
Eu encontrei ack-grep util. Primeiro, instale-o via sudo apt-get install ack-grep
e, em seguida, execute o comando ack-grep what_you_looking_for
no diretório em que você deseja pesquisar. Isso mostra todos os arquivos em que está o seu texto e também mostra a visualização desses arquivos. E isso é tão importante para mim.
Aqui está uma visão geral dos diferentes métodos que podem ser usados para pesquisar arquivos em textos específicos, com algumas opções adicionadas especificamente para trabalhar apenas com arquivos de texto e ignorar arquivos binários / de aplicativos.
Deve-se notar, no entanto, que a busca por palavras pode ficar um pouco complexa, porque a maioria das ferramentas de correspondência de linha tentará encontrar uma palavra em qualquer lugar na linha. Se estamos falando de uma palavra como string que pode aparecer no começo ou no final da linha, ou sozinha na linha, ou cercada por espaços e / ou pontuação - é quando precisaremos de expressões regulares, especialmente aquelas que vêm de Perl. Aqui, por exemplo, podemos usar -P
em grep
para fazer uso de expressões regulares Perl para cercá-lo.
$ 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
para pesquisa recursiva abaixo do diretório atual -I
para ignorar arquivos binários -H
para o nome do arquivo de saída onde a correspondência é encontrada Adequado apenas para pesquisa.
$ find -type f -exec grep -IH 'word' {} \;
find
faz a parte de pesquisa recursiva -I
opção é ignorar arquivos binários -H
para o nome do arquivo de saída onde a linha é encontrada boa abordagem para combinar com outros comandos dentro da subshell, como:
$ find -type f -exec sh -c 'grep -IHq "word" "" && echo "Found in "' 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 },".")
Este é o "caminho bash". Não é o ideal, provavelmente não é um bom motivo para usar isso quando você tem grep
ou perl
instalado.
#!/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 "" in
*word*) printf "%s\n" "";;
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 < ""
}
is_text_file(){
# alternatively, mimetype command could be used
# with *\ text\/* as pattern in case statement
case "$(file -b --mime-type "")" 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 "$@"
Ainda mais simples e rápido é o "silver searcher" sudo apt-get install silversearcher-ag
. Dê uma olhada no link para reassumir por que ele é melhor que ack * entre outros.
Tags files text-processing