GNU coreutils를 사용하고 있습니다
foo
파일 file1
과 bar
.file2
이제 를 실행하면 cp -rT foo bar
맨 페이지에서 믿게 될 수 있으므로 bar에는 덮어쓰는 대신 두 파일이 모두 포함됩니다.
나는 "bar"가 병합되지 않고 "foo"의 내용만 포함하기를 원합니다.
답변1
GNU의 경우 cp
이 -T
옵션은 소스 디렉터리가 다음 위치에 배치되지 않도록 하는 데 사용됩니다.~에대상 디렉토리. 대상 디렉터리의 내용은 삭제되지 않습니다.
this()에 대한 정보 문서는 info '(coreutils)Target directory'
다음과 같이 말합니다(예로 사용됨 mv
).
-T
--no-target-directory
마지막 피연산자가 디렉토리이거나 디렉토리에 대한 기호 링크인 경우 특별한 처리가 제공되지 않습니다. 이는 공유 영역에서 실행되는 프로그램의 경쟁 조건을 방지하는 데 도움이 됩니다. 예를 들어, 명령이
mv /tmp/source /tmp/dest
성공하더라도 이름이 다음으로 변경된다는 보장은 없습니다/tmp/source
. 다른 프로세스에서 디렉터리를 생성한 경우/tmp/dest
이름이 변경되었을 수 있습니다. 하지만 성공한다면 이름을 바꾸는 데에는 문제가 없을 것이다./tmp/dest/source
/tmp/dest
mv -T /tmp/source /tmp/dest
/tmp/source
/tmp/dest
mv -T source dest
비어 있지 않으면 실패합니다 .dest
의 내용을 예제의 내용 bar
으로 바꾸려면 다음을 사용하십시오.foo
rm -rf bar
cp -r foo bar
또는,
rsync --archive --delete foo/ bar