Considerando que exclude_file
contém caminhos, não nomes, você precisa usar -path
para corresponder às entradas. Para excluir subdiretórios de diretórios correspondentes, você também precisa -prune
deles. Isso deve funcionar:
find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -print
Se você quiser apenas ver arquivos, poderá imprimir apenas arquivos:
find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -type f -print