Respostas:
Use rsync(1):
rsync \
--remove-source-files \
--chown=unicorn:unicorn \
/home/poney/folderfulloffiles /home/unicorn/
usermape groupmaptambém.
mvé verdade? Apenas cópias? Ou faz mvisso?
Por @Kevin nos comentários abaixo, a --file - |pipesintaxe é redundante. Então eu o removi.
Isso também pode ser feito com tar:
sudo tar -C${SRC_DIR} --remove-files --group=unicorn --owner=unicorn -c ./* |
sudo tar -C${TGT_DIR} -pvx
-f -está implícito nas duas extremidades.
f -peça.
s=/home/poney/; f=folderfulloffiles; d=/home/unicorn/
sudo mv $s$f $d && sudo chown -R unicorn:unicorn $d$f
Aproximadamente o mesmo comprimento das outras respostas, e observe que, todos eles usam as mesmas chamadas de biblioteca ocultas, todos estão fazendo exatamente a mesma coisa - a menos que, como Gilles observa, isso esteja no mesmo sistema de arquivos e dispositivo , nesse caso, mvé realmente uma renomeação, o que a torna mais eficiente que rsyncou tar.
:vez de um .quando se lida com chown?
chownnormalmente leva ambos :e ..
nu=unicorn h=/home f=folderfulloffiles ; sudo mv $h/poney/$f $h/$nu/$f ; sudo chown -R ${nu}:$nu $_- embora esse não seja o ponto da sua resposta, o que é bom e eu já votei.