você já tentou isso:
find "$1" -name "$2" -exec grep -iHne "$3" {} +
Sem as aspas, o bash executa a divisão de palavras e geração de nome de arquivo nas variáveis, para que elas sejam transmitidas como vários argumentos.
Frequentemente executo find
em meus projetos de código quando faço uma alteração em algum lugar e tenho que descobrir onde impacta outros códigos, então pensei em escrever um script muito pequeno para facilitar, chame de blah.sh
:
#!/bin/bash -eu
if [ $# -ne 3 ]; then
echo "Three inputs required"
else
find $1 -name $2 -exec grep -iHn $3 {} \;
fi
O problema é que recebo um erro quando o terceiro argumento (o texto que estou procurando) contém um espaço. Por exemplo, blah . '*.php' 'foo bar'
retorna grep: bar: No such file or directory
para cada arquivo que grep
tentou explorar. Tenho certeza que é um erro bobo, eu não sou realmente de mãos dadas ...
Tags grep find bash-script