두 개의 별도 디렉터리에 있는 디렉터리와 파일을 비교합니다.

두 개의 별도 디렉터리에 있는 디렉터리와 파일을 비교합니다.

각 폴더를 반복하여 구조를 비교하기 위해 각 디렉터리와 파일의 출력(텍스트 파일)을 나열해 보았습니다.

diff --brief -Nr dir1/ dir2/ > out.txt

내가 얻는 출력은 파일의 차이점에만 해당됩니다. 내가 원하는 출력은 폴더를 반복하고 폴더가 다른 디렉터리에 있는지 지정하는 것입니다. 이는 전체 구조, 파일 및 폴더에 적용됩니다.

cat out.txt:

Files abc/def/xy.txt and pqr/def/xy.txt differ
Files abc/ooo/q.txt and pqr/ooo/q.txt differ
Files abc/ooo/t.txt and pqr/ooo/t.txt differ

답변1

두 개의 디렉토리 트리가 있다고 가정합니다: dir_onedir_two. 그런 다음 bash를 가정하면 다음과 같습니다.

모든 것을 나열하다둘 다 dir_one그리고 dir_two:

comm -12 <(cd dir_one ; find | sort) <(cd dir_two ; find | sort)

모두 나열해 보세요에 존재 dir_one하지만아니요존재하다 dir_two:

comm -23 <(cd dir_one ; find | sort) <(cd dir_two ; find | sort)

마지막으로 모든 것을 나열하십시오.아니요dir_one, 하지만존재 지역 dir_two:

comm -13 <(cd dir_one ; find | sort) <(cd dir_two ; find | sort)

답변2

내가 원하는 출력은 폴더를 반복하고 폴더가 다른 디렉토리에 있는지 지정하는 것입니다.

다음 디렉터리/파일을 고려하세요.

tree dir1/ dir2/
dir1/
|-- bar
|-- foo
`-- subdir_dir1
dir2/
`-- foo

이 변형이 귀하의 요구 사항을 충족하지 않습니까 diff?

diff -rq dir1 dir2
Only in dir1: bar
Only in dir1: subdir_dir1

관련 정보