Kiw*_*iwy 24 linux rename files chown
在 Linux(Debian、Ubuntu Mint...)上,
是否有任何选项命令或我可以用来将文件传输到另一个用户而无需执行的操作:
sudo mv /home/poney/folderfulloffiles /home/unicorn/
sudo chown -R unicorn:unicorn /home/unicorn/folderfulloffiles
Run Code Online (Sandbox Code Playgroud)
daw*_*wud 33
使用rsync(1):
rsync \
--remove-source-files \
--chown=unicorn:unicorn \
/home/poney/folderfulloffiles /home/unicorn/
Run Code Online (Sandbox Code Playgroud)
mik*_*erv 11
根据下面评论中的@Kevin,--file - |pipe语法是多余的。所以我已经删除了它。
这也可以通过tar:
sudo tar -C${SRC_DIR} --remove-files --group=unicorn --owner=unicorn -c ./* |
sudo tar -C${TGT_DIR} -pvx
Run Code Online (Sandbox Code Playgroud)
s=/home/poney/; f=folderfulloffiles; d=/home/unicorn/
sudo mv $s$f $d && sudo chown -R unicorn:unicorn $d$f
Run Code Online (Sandbox Code Playgroud)
与其他答案的长度大致相同,并且请注意,由于它们都在后台使用相同的库调用,因此它们都在做完全相同的事情——除非,正如 Gilles 指出的那样,这是在相同的文件系统和设备上, 在这种情况下mv实际上是重命名,这使其比rsyncor更有效tar。