두 디렉터리의 각 파일을 비교하여 해당 파일과 다른 경우 다른 디렉터리에 복사합니다.

두 디렉터리의 각 파일을 비교하여 해당 파일과 다른 경우 다른 디렉터리에 복사합니다.

두 디렉터리의 모든 파일을 비교하고 다른 파일을 다른 디렉터리에 복사하는 방법은 무엇입니까? 예를 들어,디렉토리 1그리고디렉토리 2:

dir1:
     build.gradle
     gradle.properties
     somejar.jar
     javacode.java
     anotherjar.jar

dir2:
     build.gradle      <-- different from build.gradle in dir1
     gradle.properties
     somejar.jar
     javacode.java     <-- different from javacode.java in dir1
     yetanotherjar.jar

새 디렉터리를 어떻게 만들 수 있나요?목차 3다음과 다른 파일이 포함되어 있습니다.디렉토리 2, 공개 파일디렉토리 1그리고디렉토리 2그리고 둘 다의 모든 일반적이지 않은 파일디렉토리 1그리고디렉토리 2?목차 3다음을 포함해야 합니다:

dir3:
     build.gradle      <-- from dir2
     gradle.properties <-- these are common files both in dir1 and dir2
     somejar.jar       <--
     javacode.java     <-- from dir2
     anotherjar.jar    <-- from dir1
     yetanotherjar.jar <-- from dir2

답변1

당신에게 필요한 것은

cp -n dir2/* dir1/* dir3/

답변2

두 개의 기본 디렉터리에 있는 모든 파일이 포함되어야 하며 파일이 두 디렉터리에 모두 나타나면 둘 중 하나를 가져와야 한다는 점을 올바르게 이해하고 있습니까 dir3? dir2그럼 간단한

cp dir1/* dir3/
cp dir2/* dir3/

이 문제를 해결해야 합니다. 두 소스 디렉터리의 서로 다른 파일이 복사됩니다 dir2. 동일한 파일을 두 번 복사하지 않으려면 대신 복사할 수도 rsync있습니다 cp.

답변3

cp -pu dir2/* dir1/* dir3/

남성의 경우:

-p    same as --preserve=mode,ownership,timestamps
-u    copy only when the SOURCE file is  newer  than  the  destination
      file or when the destination file is missing

노트:

  1. 항상 업데이트된 목차를 먼저 배치하세요. (위의 예에서: cp -pu dir1/* dir2/* dir3/업데이트된 파일은 복사되지 않습니다)
  2. dir3존재해야 합니다.

관련 정보