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
Postar um comentário