ファイルを移動し、所有権を同時に変更します


23

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

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

回答:


30

使用rsync(1)

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

4
ありがとう@dawud-これは私の毎日の「私が知らなかった、どうやって見逃したかを理解できないもの」です
ジェニーD 14

1
あなたが見て撮りたいかもしれません@JennyD usermapgroupmap同様のオプションを。
dawud

2
しかし、そうではありませんmvか?コピーのみ?それともmvそれですか?
mikeserv 14

@mikeserv正式に述べたように、私の編集を参照
dawud

11

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

これは次の方法でも実行できますtar

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

-f -両端で暗示されていることを確認してください。
ケビン14

1
@ケビンここにいない。ここで指定されています。
mikeserv 14

はい、あなたはそれを指定しましたが、それは必要ではありません。コマンドは、f -パーツなしで正常に機能します。
ケビン14

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

他の回答とほぼ同じ長さで、全員がボンネットの下で同じライブラリ呼び出しを使用しているので、Gillesが指摘しているように、これは同じファイルシステムとデバイス上にない限り、まったく同じことをしていることに注意してください、この場合mv、実際には名前変更であり、これにより、rsyncまたはより効率的になりtarます。


を扱うときの:代わりではありませんか?.chown
Kiwy 14

2
うーん-興味深い。manページではそのようになっていますが、私は常にドットを使用しています。POSIX移植性がないため、10年ほど前に GNU manページから削除されたようです。それでも動作します(LinuxのGNU coreutilsのchownを使用)が、上記で変更します。
goldilocks 14

1
chown通常、:との両方を取ります.
slm

1
少し短くすることもできますnu=unicorn h=/home f=folderfulloffiles ; sudo mv $h/poney/$f $h/$nu/$f ; sudo chown -R ${nu}:$nu $_。-それはあなたの答えのポイントではありませんが、それは良いことであり、すでに支持しています。
mikeserv 14

3
このソリューションには、ソースと宛先が同じファイルシステム上にある場合、ファイルがコピーされて元のファイルが消去されるのではなく移動されるという利点があります。
ジル 'SO-悪であるのをやめる' 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.