Outra possibilidade, se você não quiser automatizá-lo em um script, é usar o comando find para criar um script bash. Em seguida, execute o script bash. Desta forma, você pode dizer a origem do arquivo também.
Além disso, eu mudaria o texto acima apenas para o caso de você ter nomes de arquivos duplicados, caso suspeite disso em seu ambiente. Você precisaria de alguma verificação de erros no seu script.
Você também deseja preservar o caminho do diretório?
i.e. se um arquivo está aqui
/source/a/b/c/d/e.jpg
Você quer copiá-lo para
/dest/a/b/c/d/e.jpg?
ou
/dest/e.jpg?
Então, um exemplo poderia ser
find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh
Isto iria copiar apenas para um diretório / backup
Para preservar, você pode fazer
(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh
Mas você gostaria de criar todos os diretórios primeiro
(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh
O poder de fazer isso é que você também pode ver os scripts e ter certeza de que tudo fica bem antes de executar os comandos. Eu gravei algumas vezes executando o comando com ... erm ... resultados inesperados :)
Além disso, ter o script também fornece um registro do que você fará.