Eu recomendaria alavancar grep
e códigos de retorno para tornar a vida um pouco mais simples.
while read -r LINE
do
find . -name "${LINE}" | grep "${LINE}" || echo "${LINE} not found"
done < /path/to/fnames.txt
Como isso funciona:
-
find . -name "${LINE}"
tem certeza que você conhece este, encontre arquivos no diretório atual que correspondam a${LINE}
-
| grep "${LINE}"
canaliza a saída paragrep
. Fazemos isso para produzir um valor de retorno, quefind
normalmente não produz um valor útil. Se ogrep
corresponder a alguma coisa, a correspondência será impressa e o comando retornará 0. Se nada for correspondido, nada será impresso e retornará um valor de retorno diferente de zero. -
|| echo "${LINE} not found"
O||
é um canal OR, se um dos comandos antes de retornar um valor diferente de zero, ele será executado. Portanto, se ogrep
retornar diferente de zero (ou seja, nenhum arquivo correspondente foi encontrado), esse eco será executado. Se os comandos antes de sucedê-lo, ele não será executado.