Pesquisa de texto na lista de arquivos

4

Estou tentando executar pesquisa dupla em arquivos e retornar nomes de arquivos.

Estou usando

find ./ -iname '*txt' | xargs grep "searchtext" -sl

para encontrar nomes de arquivos com 'searchtext' neles.

O comando está retornando uma lista de arquivos.

Como posso encontrar o "outro texto de pesquisa" nos arquivos já encontrados e mostrá-los da mesma maneira?

    
por wormhit 23.11.2011 / 10:15

3 respostas

5

Alimente o resultado com outro grep usando backticks ou equivalente $ ().

Se você quiser manter a lista intermediária, use tee

grep -l oranges $(find . -name "*txt" | xargs grep -l apples | tee apples.txt)
    
por 23.11.2011 / 10:29
1

Você pode encadear xargs grep … :

find . -iname '*txt' | \
    xargs grep -l "searchtext" | \
    xargs grep -l "othersearchtext" | \
    xargs grep -l "yetanothersearchtext"
    
por 28.11.2011 / 20:55
0

Este bash pesquisará várias strings em determinada pasta recursivamente e retornará nomes de arquivos

Uso:

findfiles /var/www/ php searchText1 searchText2 searchText3 searchText4

bash: findfiles

#!/bin/sh

DIR=$1
EXT=$2

CMD="find $DIR -iname '*.$EXT' | xargs grep -l '$3' | xargs grep -l '$4' | xargs grep -l '$5' | xargs grep -l '$6' | xargs grep -l '$7' | xargs grep -l '$8' | xargs grep -l '$9'"

eval $CMD
    
por 23.02.2012 / 15:27