![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| UNIX para Dummies Perguntas & Respostas Se não tiver certeza de onde se pode postar uma pergunta Unix ou Linux, postá-lo aqui. Todos os UNIX e Linux novatos bem vindos! |
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| Recursivo FTP - aqui no passado. | Perderabo | Programação Shell Script e | 52 | 03-25-2009 12:15 |
| recursivos grep questão | Mace | UNIX para Dummies Perguntas & Respostas | 1 | 08-11-2006 08:39 |
| recursivos GREP? | alan | UNIX para Dummies Perguntas & Respostas | 3 | 08-22-2003 04:15 |
| grep recursivo diretórios | jagannatha | UNIX para Dummies Perguntas & Respostas | 8 | 07-24-2003 05:00 |
| FTP Recursivo | aslamg | UNIX para Dummies Perguntas & Respostas | 1 | 03-08-2001 04:27 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Recursivo grep
Olá,
Primeira vez post - não tenho qualquer formação formal unix e poderia usar alguma ajuda com isto. Tenho uma lista de strings em ficheiro1 que eu quero usar para fazer uma pesquisa recursiva (grep) sob um diretório específico. Aqui está um exemplo da string Preciso de pesquisa: / diretório / dire ctory / diretório / dire ctory / filename Estou a tentar ilustrar que a corda é um caminho completo de um arquivo, onde alguns dos diretórios tenham espaços em seus nomes. Então, tem o seguinte script: para h em `gato ficheiro1»; fazer grep-rl "$ h" /../../../../../>> /../../ ficheiro2; feito Então, eu estou tentando dizer, para cada corda em ficheiro1, faça um grep recursivo no diretório especificado e imprimir os resultados para o ficheiro2. O problema (eu acho) em que estou executando é o formato da corda estou pesquisando, o gato que estou a fazer é tratar os espaços como escapes que lança o grep desligado. Tentei colocar a string em aspas duplas e simples, mas ela ainda não funciona. Desculpem a falta de terminologia técnica - espero eu fui suficientemente claro. Se alguém pode oferecer alguma ajuda sobre como fazer com que funcione com o que eu tenho ou uma simples alternativa para o que tenho, seria uma grande ajuda. Graças - ausentar menino |
|
||||
|
Código:
find /path/to/search/in -type f | \
while read filename
do
grep -f /path/to/strings.txt $filename
done > /home/upstate_boy/results.txt
grep-f <file> meios a utilizar as cordas em <file> como cordas para pesquisa grep. O feito> nome_do_arquivo parte escreve a saída do loop para nomeficheiro Última edição por Jim McNAMARA; em 05/16/2008 10:07.. |
|
||||
|
O caminho relativo ao ficheiro2 parece errado, o redirecionamento de saída é relativo ao diretório atual, não o diretório do arquivo que você está grepping. A relativa pat grepping parece que você está errado também; / .. / é equivalente a / é equivalente a /../../../../../ Os backticks no circuito para se separar as coisas que estão em branco. Utilize um construto que é menos sensível às questões espaçamento, ou a utilização correcta citando. Código:
for h in "`cat file1`"; do grep -rl "$h" pathtodir >>file2; done ou Código:
while read h; do grep -rl "$h" pathtodir >>file2; done<file1 |
|
||||
|
Obrigado tanto para as respostas. I don't think I'm executar correctamente as suas sugestões, eu tentei todos os 3.
Jim, I'm definitely confuso por ir para onde os ficheiros que quando li o teu. supor: strings.txt \u003d arquivo com cordas Quero encontrar results.txt \u003d arquivo de saída de resultados de pesquisa Estou procurando: find / diretório / I / deseja / pesquisa /-type f | \ enquanto lê results.txt fazer grep-f strings.txt $ results.txt feito Quando eu uso isso, eu recebo: deve ler-se: «results.txt ': não é um identificador válido era, Eu não tive nenhum erro com as suas sugestões, mas estou pesquisando cordas ainda estão quebrados, ou seja, os espaços ou '/' no texto estão a ser tratados como quebras viragem 1 corda em vários pequenos textos que estão ficando cada pesquisado. Um exemplo melhor do que eu era originalmente a tentar fazer é: para h em `gato strings.txt»; fazer grep-rl "$ h" / diretório / caminho / Quero / para / pesquisa />> / home / diretório / results.txt; feito utilizando /../../ no meu post inicial não era a melhor escolha da minha parte, quando são o equivalente de costas carrapatos. Eu vou continuar a perder tempo com todas as sugestões, caso existam outras orientações podem ser oferecidos seria uma grande ajuda. Graças ausentar menino |
|
||||
|
A variável em Jim's exemplo, não pode ser nomeado results.txt, basta alterá-lo para, por exemplo, "arquivo" e você deve estar bem.
Qualquer coisa com importantes espaços em que deve ser duplamente citados. |
|
||||
|
Eu mudei-o para:
find / diretório / I / deseja / pesquisa /-type f | \ enquanto que ler o arquivo fazer grep-f strings.txt $ results.txt feito Os resultados agora são: grep:. txt: Nenhum tal lima ou diretório Pode alguém enunciar exatamente como eu devia tê-lo baseado no exemplo Venho usando? Graças ausentar menino |
![]() |
| Marcadores |
| Tags |
| grep, grep recursivo, recursivos grep |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|