xiloba
(usa Slackware)
Enviado em 12/05/2011 - 21:20h
Gostaria de saber se há, no linux, como fazer para achar um arquivo que esteja no pen drive, por exemplo, apenas sabendo um pedaço do texto que há naquele arquivo.
Por exemplo: como achar uma prova que está digitada numa planilha de texto, sabendo apenas um pedaço de um texto naquele arquivo? (sem saber o nome do arquivo)
Eu sei que existem possibilidades no modo texto, tipo:
Localizar arquivo contendo texto especificado no Linux
Certa vez, após instalar o GLPI (sistema de helpdesk), houve a necessidade de customizá-lo para ficar de acordo com as necessidades da empresa. O grande problema era saber em qual arquivo encontrar o conteúdo que deveria ser alterado.
Segue abaixo um exemplo de como efetuar a busca:
$ grep -R manaus /home/smith/ 2>/dev/null | cut -d: -f2 | uniq
Vamos dissecar o comando:
grep -R manaus /home/smith/ - procura recursivamente pela palavra "manaus" em todos arquivos a partir do diretório /home/smith;
2>/dev/null - direciona as linhas de erro para /dev/null;
| (pipe) - redireciona a saída do comando anterior (grep -R manaus /home/smith/ 2>/dev/null), para a entrada do próximo comando;
cut -d: -f2 - o grep gera um arquivo no seguinte formato:
/path/arquivo:conteúdo da linha
Como queremos saber apenas qual arquivo contém a palavra "manaus", utilizaremos o comando cut para tratar a saída. O cut lê a saída do comando anterior e seleciona apenas o segundo campo (-f2), separado pelo delimitar (-d) "dois pontos" (":"), ignorando tudo que estiver depois do delimitador.
uniq - caso haja mais de uma ocorrência da palavra "manaus" em um mesmo arquivo, será exibida uma linha para cada ocorrência. O uniq remove as linhas duplicadas.
achei aqui mesmo no VOL :)
ou esta outra dica:
Para achar um arquivo que contenha um determinado texto eu uso o comando
find [diretório] -name "*" |xargs grep -s "textoprocurado"
O comando acima me retorna o nome do arquivo, mais a linha inteira de texto em
que se encontra o "textoprocurado".
Tem algum truque para que apareça só o nome do arquivo*?
Os mans do find e do grep não lançam muita luz sobre isso.
[]s
*Motivo: o texto lota terminal e polui a saída do comando.
---------------------------------------
Como fazer isto pelo gnome(interface gráfica)?