한 폴더의 모든 내용을 다른 폴더로 바꾸는 방법 폴더에는 많은 하위 디렉토리가있을

폴더 old와가 new있습니다.

나는 모든 내용을 대체 할 old/*new/*. 해당 폴더에는 많은 하위 디렉토리가있을 수 있습니다.

그러나에 new/*없지만 파일이있는 파일은 거의 old/*없으므로 그대로 유지하고 싶습니다.

Linux 쉘에서 어떻게 할 수 있습니까?



답변

rsync가 아마도 더 나은 옵션 일 것입니다. rsync -a subdir / ./처럼 간단합니다. 더 나은 솔루션을 보려면이 unix.stackexchage 답변 을 확인하십시오.

명령 -f과 함께 사용 cp

cp -fR /source/files /dest

cp를 덮어 쓰지 않음 “프롬프트를 표시하십시오.

cp의 별칭을 무시하려면 간단히 따옴표로 묶으십시오.

 'cp' -rf ./source/* /destination/

자세한 내용은 다음 링크를 참조하십시오.

http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html

http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory


답변

사용하십시오 rsync. 디렉토리를 한 방향으로 동기화합니다. 따라서의 old모든 항목으로 폴더 를 업데이트하고 안에 있는 것을 new유지하려면 다음을 사용하십시오.

rsync -avh --dry-run /path/to/new/ /path/to/old/

첫 번째 경우 전송 될 파일 목록 만 출력합니다. 이 경우 : 찾은 모든 항목 new이에 복사 old되지 않은 경우에 복사됩니다 . 모든 것이 old그대로 유지됩니다.

잘 보이면 --dry-run인수를 제거하여 실제로 전송하십시오.

-avh플래그는 아카이브 (타임 스탬프를 보존하는 것 등) 모드, 상세하고 사람이 읽을 수있는 파일 크기를 할 수 있습니다. --delete플래그 를 지정하지 않으면 대상에서 아무것도 삭제되지 않습니다 . man rsync자세한 내용은 문의하십시오 .


답변