Find emite verdadeiro mesmo não achando o arquivo como resolver

 O find só apresenta o valor falso quando tem erro na formulação do comando:

find asd

echo $?

1

 find . -name arqnaoexiste.txt
echo $?

0

Podemos resolver isso assim:

Como todo mundo sabe o grep apresenta um valor falso caso não localize a string

echo banana | grep joka

 echo $?

1

 arq=arqnaoexiste.txt

find . -name $arq | grep -q $arq

echo $?

1

O -q diz ao grep para não imprimir na tela nenhum resultado.
 

Pode fazer de outra maneira usando o parâmetro -exec e condição para saber se find achou o arquivo ou não.

find . -name 1file.txt -exec file {} \;

O find vai procurar o arquivo 1file.txt e se achar vai executar o comando file.

{}=Nome do arquivo achado pelo find.

\;  Está escapado para o shell não interpretar. Para o parâmetro -exec ; tem significado que já foi definido o comando que quer ou seja para terminar o -exec.

 find_file=$(find . -name $1  -exec file {} \;)
[ -z "$find_file" ] && echo File not found  || echo File found $find_file

 -z é para saber se o valor da variável está vazia.



 

 

 

 

 

Comentários

Postagens mais visitadas deste blog

Script precisa do sudo para dar a permissão ao um comando fazer algo ....

Variável de { . Variável de matriz

Filtragem de strings no terminal