Para copiar os arquivos, você pode usar uma combinação de find e GNU tar para o trabalho:
$ find -type f ... -print0 \
| tar -c -f - --null --files-from - \
| tar -C DEST_BASE -v -x -f - \
--show-transformed \
--transform 's,PATTERN,REPLACE,OPTIONS
(o find gera todo o nome do arquivo de origem, o primeiro tar lê-os em um pipe e o segundo tar faz o nome do arquivo / transformação do caminho)
Por padrão, a opção --transform
espera uma expressão regular básica, mas há também a opção x
regexp disponível. Outra opção útil de regexp é i
para correspondência insensível a maiúsculas e minúsculas.