同时移动文件并更改所有权

同时移动文件并更改所有权

在 Linux(Debian、Ubuntu Mint...)上,
是否有任何选项命令或其他命令可以让我无需执行以下操作即可将文件传输给另一个用户:

sudo mv /home/poney/folderfulloffiles /home/unicorn/
sudo chown -R unicorn:unicorn /home/unicorn/folderfulloffiles

答案1

使用rsync(1):

rsync \
  --remove-source-files \
  --chown=unicorn:unicorn \
    /home/poney/folderfulloffiles /home/unicorn/

答案2

根据下面评论中的@Kevin,--file - |pipe语法是多余的。所以我把它删除了。

这也可以通过以下方式完成tar

sudo tar -C${SRC_DIR} --remove-files --group=unicorn --owner=unicorn -c ./* | 
    sudo tar -C${TGT_DIR} -pvx

答案3

s=/home/poney/; f=folderfulloffiles; d=/home/unicorn/ 
sudo mv $s$f $d && sudo chown -R unicorn:unicorn $d$f

与其他答案的长度大致相同,请注意,因为它们都在幕后使用相同的库调用,所以它们都在做完全相同的事情 - 除非,正如吉尔斯指出的,这是在相同的文件系统和设备上,在这种情况下mv实际上是重命名,这使得它比rsync或更有效tar

相关内容