Use um padrão glob com a opção -name de find para indicar o padrão desejado, *.txt no seu caso:
find . -type f -name '*.txt' -exec mv -t /destination {} +
Claro, substitua /destination pelo diretório de destino real.
Notas:
-
Você não precisa gerar
xargse um canal anônimo, use a lógicamvno predicado-execdefind -
find ... -execlida com todos os tipos possíveis de nomes de arquivos eARG_MAX -
O GNU
mv(padrão no Ubuntu) tem-tpara ter um diretório de destino, para que você possa aproveitar o argumento+de-execpara enviar todos os arquivos em execução única demv(ou pelo menos execuções mínimas seARG_MAXfor acionado no processo)