Você pode usar xargs
para citar cada linha.
xargs -a list.txt -I% cp "%" destination/
Seu segundo requisito não é muito prático, mas supondo que a lista seja apenas uma lista de nomes de arquivos, algo assim poderia funcionar:
xargs -a list.txt -L1 -I% find -name "%" -exec cp {} destination/ \; -quit
Ele passará linhas sucessivas para find
, que encontrará o primeiro arquivo (no diretório atual, recursivo) com esse nome e o copiará.