2011-04-13 2 views
0

두 디렉토리에 A와 B가 있습니다. 디렉토리 B와 A를 비교하려고합니다. 디렉토리 A와 디렉토리 B에는 많은 공통 디렉토리가 있습니다 동일) 및 파일.
디렉토리 A에 파일이 없으면 디렉토리 구조를 유지하여 파일을 디렉토리 C에 복사하십시오.두 개의 디렉토리를 재귀 적으로 비교하여 쉘 스크립트를 사용하여 디렉토리의 내용을 세 번째 디렉토리에 복사하십시오.

디렉토리 A에있는 경우 다음과 같은 상대 경로가 존재하지 않습니다.

B/hellboy/MyScripts/dir1/ 

은 내가 diff 명령과 함께 많은 노력 디렉토리 C.

이 경로 및 하위 파일 및 디렉토리를 복사 할. 그러나 나는 그것이 가능하지 않다고 생각한다. 이 일에서 벗어나도록 도와주세요.

+0

Windows 또는 Linux? – ds27680

+0

리눅스 opreating 시스템 – Vivek

+0

'diff dira dirb' – kurumi

답변

0

(rsync의 친척) rdiff-backup을 보시고, 원하는대로 제공 할 수 있습니다.

+0

동일한 컴퓨터에 스크립트와 소스 및 대상 디렉토리를 모두 쓰고 싶습니다. – Vivek

0

다음 스크립트 스 니펫이 찾고있는 것과 비슷합니까?

#!/usr/bin/env bash 

# Setup for testing: 
# mkdir -p A/l1-{1,2,3}/l2-{4,5,6} 
# mkdir -p B/l1-{2,3,4,5}/l2-{1,2,3,4} 
# touch B/l1-{3,4,5}/l2-{2,3,4}/file-${RANDOM} 
# touch {A,B}/l1-2/l2-4/never_goes_to_C 

while read f d _; do 
    if [ -e "A/$f" ]; then 
    echo "---> FOUND: A/$f" 
    else 
    echo "---> NOT FOUND: A/$f, moving to C" 
    mkdir -p "C/$d" && cp -a "B/$f" "C/$d" 
    fi; 
done < <(cd B; find . -printf "%p %h\n") 
관련 문제