디렉터리 구조의 차이와 상관없이 두 번째 위치에 중복되지 않은 파일은 무엇인지 찾아보세요.

디렉터리 구조의 차이와 상관없이 두 번째 위치에 중복되지 않은 파일은 무엇인지 찾아보세요.

나는 각각 수십만 개의 파일을 포함하는 두 개의 디렉토리를 가지고 있습니다. 대부분의 파일은 두 위치 간에 중복되지만 일부는 그렇지 않습니다. 어떤 파일이 중복되지 않는지 알고 싶습니다. 즉, 백업되지 않은 파일을 백업하거나 삭제하도록 선택할 수 있습니다. 핵심은 각 파일의 경로가 상위 디렉터리에 비해 완전히 다를 수 있다는 것입니다. 일부 파일은 동일하지만 이름이 다를 수 있으며 도구는 체크섬을 비교하여 출력에서 ​​이러한 파일을 제거해야 합니다.

답변1

이 문제를 해결하는 데 도움이 되는 fdupes라는 환상적인 작은 프로그램이 있습니다. 모든 중복 항목과 기타 재미있는 항목을 제거하도록 설정할 수도 있으므로 주의하세요.

답변2

나는 이것을 많이 테스트하지 않았지만 지금까지 fdupes 솔루션은 다음과 같습니다.

#!/usr/bin/env python
# Load a list of files in dir1, dir2, 
# and a list of dupes provided by fdupes,
# and produce a list of files that aren't duplicated.
#
# find dir1 -type f > dir1.txt
# find dir2 -type f > dir2.txt
# fdupes dir1 dir2 -1 > dupes.txt

import sys

# print sys.argv
dir1_file = sys.argv[1]
dir2_file = sys.argv[2]
dupes_file = sys.argv[3]

dir1 = {}
with open(dir1_file) as f:
    for line in f:
        dir1[line.strip()] = True

dir2 = {}
with open(dir2_file) as f:
    for line in f:
        dir2[line.strip()] = True

dupes = {}
with open(dupes_file) as f:
    for line in f:
        (dir1_dupe, dir2_dupe) = line.split()
        rv1 = dir1.pop(dir1_dupe, None)
        rv2 = dir2.pop(dir2_dupe, None)

# print "non dupes:"
for key in dir1.keys():
    print key
for key in dir2.keys():
    print key

관련 정보