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
xargs
e um canal anônimo, use a lógicamv
no predicado-exec
defind
-
find ... -exec
lida com todos os tipos possíveis de nomes de arquivos eARG_MAX
-
O GNU
mv
(padrão no Ubuntu) tem-t
para ter um diretório de destino, para que você possa aproveitar o argumento+
de-exec
para enviar todos os arquivos em execução única demv
(ou pelo menos execuções mínimas seARG_MAX
for acionado no processo)