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)
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?
Você pode encadear xargs grep …
:
find . -iname '*txt' | \
xargs grep -l "searchtext" | \
xargs grep -l "othersearchtext" | \
xargs grep -l "yetanothersearchtext"
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