컴퓨터에서 중복 이미지 파일을 제거하는 가장 좋은 방법은 무엇입니까? Python 스크립트 또는 프리웨어

내 Windows 컴퓨터, 다른 하위 폴더 및 다른 파일 이름으로 많은 중복 이미지 파일이 있습니다.

중복을 제거하기 위해 어떤 Python 스크립트 또는 프리웨어 프로그램을 권장합니까?

(나는 읽었다. 비슷한 질문이지만, 포스터는 다른 파일 크기로 시각적 인 중복을 묻습니다. 내 파일 이름이 다른 파일과 중복됩니다.)



답변

MD5 합계에 의존하지 마십시오.

MD5 합계는 중복을 확인할 수있는 신뢰할만한 방법이 아니며 차이점을 확인하는 유일한 방법입니다.

MD5를 사용하여 찾기 가능한 후보자 중복 된 다음 MD5를 공유하는 각 쌍에 대해

  1. 두 파일을 모두 엽니 다.
  2. 하나가 다를 때까지 해당 파일에서 앞으로 탐색합니다.

중복 아이덴티티 파일에 대한 순진한 접근 방식을 사용하는 사람들이 내가 싫어하는 것을보고 있습니다. 전적으로 SHA256 또는 SHA512와 같은 더 거친 무언가를 사용하면 해쉬 알고리즘에서 더 많은 비트를 검사함으로써 합리적인 수준으로 확률을 낮출 수 있습니다. MD5는 충돌 조건이 너무 약합니다.

또한 ‘파일 체크’라는 제목의 메일 링리스트를 읽는 사람들에게 조언합니다. http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html

“MD5가 모든 파일을 고유하게 식별 할 수 있습니다”라고 말하면 논리 오류가 발생합니다.

길이가 40,000 바이트에서 길이가 100,000,000,000 바이트까지 다양한 값의 범위가 주어지면 해당 범위에서 사용할 수있는 조합의 총 수 매우 단순한 128 비트 길이의 MD5로 표시되는 가능한 값 수를 초과합니다.

2 ^ 128 조합만으로 2 ^ 100,000,000,000 조합을 나타냅니다? 나는 그렇게 생각하지 않는다.

최소한의 순진한 길

중복을 제거하는 가장 순진한 방법과 가장 빠른 방법은 다음과 같습니다.

  1. 크기 기준 : 크기가 다른 파일은 동일하지 않을 수 있습니다. 파일을 열 필요가 없으므로 시간이 오래 걸립니다.
  2. MD5 : 다른 MD5 / Sha 값을 가진 파일은 동일 할 수 없습니다. 파일의 모든 바이트를 읽고 수학을 수행해야하기 때문에 시간이 좀 더 오래 걸리지 만 여러 번 비교하는 것이 더 빠릅니다.
  3. 위의 차이점에 실패 : 파일을 바이트 단위로 비교합니다. 이것은 실행하기에 느린 테스트이므로 다른 모든 제거 요소가 고려 될 때까지 이것이 남아있는 이유입니다.

포듀 페스 이러다. 동일한 기준을 사용하는 소프트웨어를 사용해야합니다.


답변

Cygwin이 설치된 유닉스 (Linux 포함) OS 또는 Windows와 같은 하나의 라이너입니다.

find . -type f -print0 | xargs -0 shasum | sort |
  perl -ne '$sig=substr($_, 0, 40); $file=substr($_, 42); \
    unlink $file if $sig eq $prev; $prev = $sig'

md5sum (약 50 % 빨라짐)은 고의적으로 생성 된 충돌이 없다는 것을 알고있는 경우 사용할 수 있습니다 (자연스럽게 발생하는 md5 충돌을 발견 할 기회보다 10 개의 주요 복권을 더 많이 얻을 수있는 기회가 더 많습니다).

당신이 그들을 제거하는 대신 가지고있는 모든 dups를보고 싶다면 unlink $file ~에 부분 print $file, "\n".


답변

나는 사용했다. fdupes (C로 작성) 및 freedups (Perl) 유닉스 시스템에서, 그리고 그들은뿐만 아니라 Windows에서 작동 수도 있습니다; 또한있다 비슷한 것들 Windows에서 작동한다고 주장하는 dupmerge, liten (파이썬으로 작성) 등


답변

Windows에서 중복 이미지를 제거하려면 다음을 확인하십시오. DupliFinder. 이름, 크기 및 실제 이미지 정보와 같은 다양한 기준으로 사진을 비교할 수 있습니다.

중복 파일을 제거하는 다른 도구를 보려면이 Lifehacker를 살펴보십시오. 조.


답변

대신 DupliFinder 대신 포크 프로젝트를 사용해보십시오. 데드 린저 . 원래 프로젝트에 많은 버그를 수정하고 새로운 기능을 추가하며 성능을 획기적으로 향상 시켰습니다.


답변

하나의 옵션이 될 수 있습니다. Dupkiller .

DupKiller는 컴퓨터에서 중복되거나 유사한 파일을 검색하고 제거하는 가장 빠르고 강력한 도구 중 하나입니다. 검색 메커니즘에 내장 된 복잡한 알고리즘은 고속 결과 검색 – 빠른 파일 검색을 수행합니다. 많은 옵션을 사용하여 검색을 유연하게 사용자 정의 할 수 있습니다.