Odpowiedzi:
Użyj rsync(1):
rsync \
--remove-source-files \
--chown=unicorn:unicorn \
/home/poney/folderfulloffiles /home/unicorn/
usermapi groupmapopcje, jak również.
mvtak, prawda? Tylko kopie? A może mvto?
Według @Kevin w komentarzach poniżej --file - |pipeskładnia jest zbędna. Więc to usunąłem.
Można to również zrobić za pomocą tar:
sudo tar -C${SRC_DIR} --remove-files --group=unicorn --owner=unicorn -c ./* |
sudo tar -C${TGT_DIR} -pvx
-f -jest implikowane na obu końcach.
f -części.
s=/home/poney/; f=folderfulloffiles; d=/home/unicorn/
sudo mv $s$f $d && sudo chown -R unicorn:unicorn $d$f
Mniej więcej tyle samo czasu, co inne odpowiedzi, i zauważ, że wszyscy używają tych samych wywołań biblioteki pod maską, wszyscy robią dokładnie to samo - chyba że, jak zauważa Gilles, jest to ten sam system plików i urządzenie , w którym mvto przypadku jest tak naprawdę zmiana nazwy, co czyni go bardziej wydajnym niż rsynclub tar.
:zamiast, .gdy masz do czynienia chown?
chownzwykle zajmuje zarówno :i ..
nu=unicorn h=/home f=folderfulloffiles ; sudo mv $h/poney/$f $h/$nu/$f ; sudo chown -R ${nu}:$nu $_- choć nie o to chodzi w twojej odpowiedzi, co jest dobre, a ja już głosowałem.