Talvez simplesmente canalizar a saída de find
em grep
seja o suficiente:
if find . -name test.txt -size 156c | grep -q .; then echo Found; fi
A chamada para find
não terá saída, a menos que um arquivo que corresponda às condições de nome e tamanho definidas seja encontrado, e grep .
terá status de saída 0 ("true") somente se sua entrada não estiver vazia. A opção -q
pede para não imprimir nenhuma saída, o que seria irrelevante aqui porque nos preocupamos apenas com o status de saída.
Para limpar outra possível fonte de confusão: como @derobert mencionado em um comentário, os colchetes não fazem parte da sintaxe da construção if
: você descobrirá que existe um comando chamado [
, que tem a tarefa de avaliar a expressão booleana e retornar seu valor de verdade na forma de um código de saída ( [
também pode ser um shell embutido); é este comando que verifica a presença de um colchete de fechamento:
$ [ 3 -gt 2 ] ; echo $?
0
$ [ 3 -lt 2 ] ; echo $?
1
$ [ 3 -lt 2 ; echo $?
bash: [: missing ']'
2
Nos comandos acima, 0 significa verdadeiro, 1 significa falso e 2 sinaliza um erro.