Você não precisa de nenhum pipe e xargs
para fazer os nomes dos arquivos como argumentos para mv
.
Use apenas mv
na ação -exec
de find
:
find /home -type f -name '*.pdf' -exec mv -t /destination {} +
- Substitua
/destination
pelo diretório de destino real -
find
lidará com todos os nomes de arquivos possíveis -
find
processaráARG_MAX
passando quantos nomes de arquivo de uma só vez, para que não acioneARG_MAX
- Se você estiver procurando apenas arquivos (presumivelmente, neste caso), limite o vetor de pesquisa adicionando
-type f
- Cite a expansão glob,
'*.pdf'
, para que o shell não os expanda antecipadamente, poisfind
os manipulará
Se por algum motivo estranho, ou para fins de aprendizado, você deve usar pipe xargs
:
find /home -type f -name '*.pdf' -print0 | xargs -0 mv -t /destination