동일한 md5 합계를 갖는 출력 라인

동일한 md5 합계를 갖는 출력 라인

이런 스크립트가 있어요

find path -type f -exec md5sum {} +'

이런 결론이 있군요

/tmp
❯ find $pwd -type f -exec md5sum {} + 

\a7c8252355166214d1f6cd47db917226  ./guess.bash
e1c06d85ae7b8b032bef47e42e4c08f9  ./qprint.bash
8d672b7885d649cb76c17142ee219181  ./uniq.bash
2d547f5b610ad3307fd6f466a74a03d4  ./qpe
523166a51f0afbc89c5615ae78b3d9b0  ./Makefile
57a01f2032cef6492fc77d140b320a32  ./my.c
c5c7b1345f1bcb57f6cf646b3ad0869e  ./my.h
6014bc12ebc66fcac6460d634ec2a508  ./my.exe
0ff50f0e65b0d0a5e1a9b68075b297b8  ./levik/2.txt
5f0650b247a646355dfec2d2610a960c  ./levik/1.txt
5f0650b247a646355dfec2d2610a960c  ./levik/3.txt

그런 결론이 필요해요

5f0650b247a646355dfec2d2610a960c  ./levik/1.txt
5f0650b247a646355dfec2d2610a960c  ./levik/3.txt

답변1

중복 파일을 찾는 것이 작업인 경우 다음을 사용할 수도 있습니다 fdupes.

특정 경로에서 중복 파일을 검색합니다. 이러한 파일은 파일 크기를 MD5 서명과 비교한 다음 바이트별로 비교하여 찾습니다.

fdupes -r .

답변2

GNU가 있다면 uniq처음 32자를 반복하는 모든 줄을 표시하도록 요청할 수 있습니다:

find path -type f -exec md5sum {} + | sort | uniq -D -w32

uniq연속된 중복 항목만 발견되므로 목록을 정렬해야 합니다 . 이는 또한 모든 파일 경로에 개행 문자가 포함되어 있지 않다고 가정하고 모든 도구가 GNU 구현이라고 가정하고 다음을 사용합니다.

find . -type f -exec md5sum -z {} + | sort -z | uniq -z -D -w32 | tr '\0' '\n'

(GNU md5sum파일 이름의 특수 문자를 처리하는 자체 방법, 그러나 이는 uniq위에 표시된 방식으로 사용할 수 없는 출력을 생성합니다. )


1 기술적으로 현재 GNU 버전에서는 uniq첫 번째 32바이트예를 들어, UTF-8 인코딩 á과 문자 는 인코딩이 0xc3 바이트로 시작하기 때문에 é동일한 것으로 간주됩니다 . uniq -w1그러나 16진수로 인코딩된 MD5 및 MD5의 0-9a-f 문자에는 차이가 없습니다. 이러한 문자는 항상 단일 바이트로 인코딩되기 때문입니다.

관련 정보