Vou sugerir uma alternativa usando find exec e cp --parents
find ./ -name *.ARW -exec cp --parents {} /home/user/target-ARW-dir/ \;
find ./ -name *.CR2 -exec cp --parents {} /home/user/target-CR2-dir/ \;
A limitação disso é que o seu diretório de trabalho tem que estar acima da estrutura de arquivos que você deseja copiar.
Uma ideia do que faz:
find localizar arquivos
./ do diretório em que ele aparecerá
-name *.ARW apenas lista arquivos que terminam em .ARW
-exec executa comandos na lista de arquivos retornados
cp --parents copie e mantenha a estrutura de diretórios
{} expande para cada um dos arquivos find relatórios, pense nisso como x in for x in $files
/home/user/target-ARW-dir/ apenas um diretório de exemplo, você deve mudar isso para o que você realmente quer
\; maneira correta de terminar um find -exec para que ele aja como um loop for