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.