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