폴더에 흩어져 있는 동일한 이름의 파일을 삭제하고 싶습니다. 이 명령은 파일 검색 및 나열에 적합합니다. 그런 다음 이 파일을 수동으로 삭제합니다.
다음 명령에 삭제 옵션을 추가할 수 있습니까?
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 해시 일치
- 검색할 해시가 한 줄에 하나씩 포함된 텍스트 파일을 만듭니다.
hashes.txt
awk '{printf "%s%s", NR-1 ? "|" : "", $1}' hashes.txt
이는 파이프로 구분된 해시 라인으로 다시 형식화됩니다|
.- 정확한 문자열 일치 대신 정규식을 사용하여 해시를 일치시키려면 원래 명령의 변형을 사용하십시오.
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
- 위의 3단계에서 삭제
-n1
하고 교체rm
하거나rm -f
실제로 파일 삭제를 수행합니다.