web-dev-qa-db-ja.com

ファイルの移動と所有権の変更を同時に行う

Linux(Debian、Ubuntu Mint ...)では、
ファイルを別のユーザーに転送するために使用できるオプションコマンドまたは何かがありますか。

Sudo mv /home/poney/folderfulloffiles /home/Unicorn/
Sudo chown -R Unicorn:unicorn /home/Unicorn/folderfulloffiles
23
Kiwy

rsync(1) を使用:

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

以下のコメントの@Kevinによると、--file - |pipe構文は冗長です。だから私はそれを削除しました。

これは、tarでも実行できます。

Sudo tar -C${SRC_DIR} --remove-files --group=Unicorn --owner=Unicorn -c ./* | 
    Sudo tar -C${TGT_DIR} -pvx
11
mikeserv
s=/home/poney/; f=folderfulloffiles; d=/home/Unicorn/ 
Sudo mv $s$f $d && Sudo chown -R Unicorn:unicorn $d$f

他の回答とほぼ同じ長さであり、それらはすべて内部で同じライブラリ呼び出しを使用しているため、すべて同じことを行っていることに注意してください。 、その場合、mvは実際には名前の変更であり、rsyncまたはtarよりも効率的になります。

8
goldilocks