MD5 기반 파일 찾기 및 삭제

MD5 기반 파일 찾기 및 삭제

폴더에 흩어져 있는 동일한 이름의 파일을 삭제하고 싶습니다. 이 명령은 파일 검색 및 나열에 적합합니다. 그런 다음 이 파일을 수동으로 삭제합니다.

다음 명령에 삭제 옵션을 추가할 수 있습니까?

find /folder -type f -exec md5sum {} + | grep '^aafa26a6610d357d8e42f44bc7e76635'

답변1

노력하다

find ... | awk '{$1 = "rm" ; print } ' | bash

aaf...그러면 실제 md5sum()이 rm으로 대체됩니다.

rm파일 이름에 특수 문자가 있거나 파일이 쓰기 금지되어 있는 경우( 로 대체 ) rm -f작동하지 않습니다 .

답변2

또 다른 가능성은 다음과 같습니다. 필요한 경우 rm로 교체하세요. rm -f또한 (검증 목적으로) 전달된 인수를 인쇄하려면 추가 -n1( xargs제거 )하십시오.rm

find . -type f -exec md5sum {} + | awk '$1 == "d41d8cd98f00b204e9800998ecf8427e" {printf "%s\0", substr($0, 35)}' | xargs -r0 rm

이 방법을 주목하세요하다파일 이름 및/또는 폴더의 공백을 처리합니다.

여러 MD5 해시 일치

  1. 검색할 해시가 한 줄에 하나씩 포함된 텍스트 파일을 만듭니다.hashes.txt
  2. awk '{printf "%s%s", NR-1 ? "|" : "", $1}' hashes.txt이는 파이프로 구분된 해시 라인으로 다시 형식화됩니다 |.
  3. 정확한 문자열 일치 대신 정규식을 사용하여 해시를 일치시키려면 원래 명령의 변형을 사용하십시오.find . -type f -exec md5sum {} + | awk '$1 ~ "^('$(awk '{printf "%s%s", NR-1 ? "|" : "", $1}' hashes.txt)')$" {printf "%s\0", substr($0, 35)}' | xargs -r0 -n1
  4. 위의 3단계에서 삭제 -n1하고 교체 rm하거나 rm -f실제로 파일 삭제를 수행합니다.

관련 정보