크기가 약 12,000 (150MB 이상) 인 파일 시스템에서 중복 파일을 제거하려고합니다. 나는 세트에서 20-50 개의 중복을 기대한다.해시에 중복 항목을 나열하려면 어떻게합니까?
비교적 까다로운 모든 단일 파일에 대한 체크섬 대신 모든 파일과 해당 파일 크기를 나열하는 해시를 작성하고 파일 크기가 고유 한 항목을 제거하고 나머지는 체크섬 만 수행하고, 많은 시간을 절약 할 수 있습니다.
그러나 고유 항목 만 해시를 제거하는 데 문제가 있습니다. 나는 files
이 super_cool_map.png => 1073741824,
같은 해시이고, 시도 :
uniques = files.values.uniq
dupes = files.delete_if do |k,v|
uniques.include?(v)
end
puts dupes
는하지만 그것은 단지 빈 해시를 출력합니다. 어떻게해야합니까?
일부 데이터 입력을 제공하므로 결과를 단계적으로 보여줄 수 있습니다. –
@ArupRakshit 귀하의 답변은 정상입니다. 나는'flat_map' 대신에'map'을 사용하는 것이 더 유용하다고 생각합니다. 이것은 그룹 배열에 속을 유지합니다. – Candide