Encontre todos os arquivos e use o resultado no padrão de pesquisa grep

0

Eu encontrei um exemplo que usa uma combinação de find e xarg ou exec para pesquisar um padrão específico a partir do resultado. ver link aqui .
No entanto, gostaria de usar o resultado do comando find e usá-lo como padrão de pesquisa para o grep. Algo como o comando abaixo, mas não tenho certeza de como construí-lo.

find . -name "*.cgi" -printf '%f\n' | cut -d. -f1 | xarg grep 'find_result' *.html
    
por dimas 24.05.2017 / 16:05

2 respostas

3

Assumindo que o GNU grep e supondo que seus nomes de arquivos não tenham novas linhas incorporadas:

find . -name '*.cgi' -printf '%f\n' | cut -d. -f1 | sort -u | fgrep -f - *.html
    
por 24.05.2017 / 16:14
2

Você não precisa de xargs aqui, você pode ter apenas grep lendo a lista de padrões de stdin:

com o GNU find:

find . -name '*cgi' -printf '%f\n' | grep -f - *html

caso contrário:

find . -name '*cgi' | cut -f2- -d/ | grep -f - *html
    
por 24.05.2017 / 16:14