Odpowiedzi:
Użyj rsync(1)
:
rsync \
--remove-source-files \
--chown=unicorn:unicorn \
/home/poney/folderfulloffiles /home/unicorn/
usermap
i groupmap
opcje, jak również.
mv
tak, prawda? Tylko kopie? A może mv
to?
Według @Kevin w komentarzach poniżej --file - |pipe
skł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 mv
to przypadku jest tak naprawdę zmiana nazwy, co czyni go bardziej wydajnym niż rsync
lub tar
.
:
zamiast, .
gdy masz do czynienia chown
?
chown
zwykle 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.