이런 스크립트가 있어요
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 문자에는 차이가 없습니다. 이러한 문자는 항상 단일 바이트로 인코딩되기 때문입니다.