Supondo que não existam caracteres problemáticos (por exemplo, aqueles em IFS ) nos nomes das bibliotecas, faça um loop sobre a lista e passe cada um para um novo achado:
./libopt -d test . 2>&1 | sed -rn 's/Cannot find library \"(.*?)\"//p' \
| while read libname; do
find /usr -name "$libname"
done
Caso contrário, para uma única passagem do sistema de arquivos (a acima faz uma para cada arquivo de entrada), a opção find -name não é adequada para corresponder a uma lista de nomes de arquivos, portanto talvez a saída de uma única pesquisa no sistema de arquivos possa ser passada para% código%. A pesquisa também pode ser reduzida procurando apenas em diretórios em grep que são denominados /usr :
./libopt -d test . 2>&1 | sed -rn 's/Cannot find library \"(.*?)\"//p' > blah
find /usr/lib /usr/*/lib -type f | grep -F -f blah
Use um nome de arquivo lib generated se mktemp for um problema. Com um shell sofisticado, o arquivo de padrões para blah poderia ser gerado em tempo real por meio de alguma forma de substituição de processo.