동시에 파일 이동 및 소유권 변경


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-이것은 나의 매일 "내가 알지 못했고 그것을 놓친 방법을 이해할 수없는 것들"
Jenny D

1
@JennyD 당신은 usermap또한 groupmap옵션을 보고 싶을 수도 있습니다.
dawud

2
하지만 그렇지 mv않습니까? 사본 만? 아니면 그렇 mv습니까?
mikeserv

@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 -양쪽에 암시되어 있는지 확인하십시오 .
Kevin

1
@Kevin 여기 없습니다. 여기에 지정되어 있습니다.
mikeserv

예, 지정했지만 필요하지 않습니다. 당신의 명령은 f -부분 없이 잘 작동합니다 .
Kevin

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

2
흠-흥미 롭습니다. 맨 페이지에서는 그런 식이지만 항상 점을 사용했습니다. POSIX 포터블이 아니기 때문에 약 10 년 전에 GNU 매뉴얼 페이지에서 가져온 것처럼 보입니다 . 그래도 여전히 작동하지만 (Linux의 GNU coreutils의 chown으로) 위의 내용을 변경하겠습니다.
goldilocks

1
chown일반적으로 모두 소요 :하고 ..
slm

1
당신은 그것을 조금 더 짧게 할 수 있습니다 : nu=unicorn h=/home f=folderfulloffiles ; sudo mv $h/poney/$f $h/$nu/$f ; sudo chown -R ${nu}:$nu $_- 그것은 당신의 대답의 요점이 아닙니다.
mikeserv

3
이 솔루션은 소스와 대상이 동일한 파일 시스템에있는 경우 파일이 복사되지 않고 이동되고 원본이 지워지는 이점이 있습니다.
Gilles 'SO- 악마 그만해'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.