Use find com a opção exec , mas primeiro crie a pasta de destino.
mkdir -p /home/somewhere/else
find /somewhere -iname "*.xxx"
Isto irá listar tudo o que seria movido. Agora, se você tem certeza de que esses são os arquivos que deseja mover, execute o seguinte:
find /somewhere -iname "*.xxx" -exec mv '{}' /home/somewhere/else/ \;
Na linha exec , '{}' será substituído pelo nome real do arquivo e será movido para o destino. Da mesma forma, para copiar, apenas troque mv por cp . O \; é necessário para finalizar o comando.
Se você quiser uma confirmação antes de cada operação de arquivo que substituiria um arquivo já existente, poderá adicionar a opção -i após mv ou cp , respectivamente.
Não há necessidade de grep , xargs e seus gostos. Isso complicaria desnecessariamente as coisas.