Não use find para isso. A maneira como você for com find precisará de algo como um único mv por arquivo. Isso é um monte de processos e sem nenhum benefício. Isso sem mencionar que é simplesmente mais difícil fazer isso. Essa é a minha opinião, de qualquer maneira.
Eu usaria um stream ou uma ferramenta em lote e tenderia a preferir pax :
cd -P . && mkdir ../newmp4 &&
pax -rwls'|?|_|g' . "${PWD%/*}/newmp4"
Se você puder criar o diretório ../newmp4 , esse pequeno script espelhará a árvore com raiz em . para o diretório recém-criado com hardlinks, mas substituirá cada ? que ocorre em qualquer nome de arquivo por um sublinhado no enquanto isso.
Uma vantagem para isso é que as árvores ambas continuam a existir depois - nenhuma das pastas raiz do diretório atual são afetadas - elas são alteradas apenas na versão espelhada da árvore. E assim você pode inspecionar os resultados depois de decidir qual versão da árvore remover. Se alguma coisa der errado durante a operação - não há mal nenhum.
Isso requer, no entanto, um fs que suporte hardlinks e que tenha pelo menos o mesmo número de inodes livres restantes, pois há diretórios filhos de . +2 e assume que .. . e todos os filhos de . compartilha a mesma montagem do sistema de arquivos.
Praticamente o mesmo efeito pode ser obtido com rsync , eu acho, embora eu não acredite que seja simplesmente feito. Se você não tem pax (mesmo se você realmente deveria ) , você pode simplesmente obter isto. mirabilos mantém o (que eu saiba) mais versão comumente usada nos sistemas linux.