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, quefindnormalmente não produz um valor útil. Se ogrepcorresponder 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 ogrepretornar 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.