{"id":124,"date":"2026-02-23T20:52:54","date_gmt":"2026-02-23T20:52:54","guid":{"rendered":"https:\/\/hackcuba.net\/?p=124"},"modified":"2026-02-23T20:52:54","modified_gmt":"2026-02-23T20:52:54","slug":"sistema-de-busqueda-de-archivos-duplicados-en-c","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=124","title":{"rendered":"Sistema de b\u00fasqueda de archivos duplicados en C++"},"content":{"rendered":"\n<p>Este programa analiza un directorio (y sus subdirectorios), calcula un hash del contenido de cada archivo y detecta cu\u00e1les son duplicados reales, mostrando sus rutas completas.<\/p>\n\n\n\n<!--more-->\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Requisitos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C++17 o superior<\/li>\n\n\n\n<li>Compilador moderno (g++ 8+, MSVC, Clang)<\/li>\n\n\n\n<li>Soporte para <code>&lt;filesystem><\/code><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream>\n#include &lt;filesystem>\n#include &lt;fstream>\n#include &lt;unordered_map>\n#include &lt;vector>\n#include &lt;sstream>\n\nnamespace fs = std::filesystem;\n\n\/\/ Funci\u00f3n para generar un hash simple del archivo\nstd::string generarHash(const fs::path&amp; rutaArchivo) {\n    std::ifstream archivo(rutaArchivo, std::ios::binary);\n    if (!archivo) return \"\";\n\n    std::ostringstream contenido;\n    contenido &lt;&lt; archivo.rdbuf();\n    \n    std::string datos = contenido.str();\n    std::hash&lt;std::string> hasher;\n    return std::to_string(hasher(datos));\n}\n\nint main() {\n    std::string ruta;\n    std::cout &lt;&lt; \"Ingrese la ruta a analizar: \";\n    std::getline(std::cin, ruta);\n\n    fs::path directorio(ruta);\n\n    if (!fs::exists(directorio) || !fs::is_directory(directorio)) {\n        std::cerr &lt;&lt; \"Ruta inv\u00e1lida.\" &lt;&lt; std::endl;\n        return 1;\n    }\n\n    std::unordered_map&lt;std::string, std::vector&lt;fs::path>> mapaHashes;\n\n    try {\n        for (const auto&amp; entrada : fs::recursive_directory_iterator(directorio)) {\n            if (entrada.is_regular_file()) {\n                std::string hash = generarHash(entrada.path());\n                if (!hash.empty()) {\n                    mapaHashes&#91;hash].push_back(entrada.path());\n                }\n            }\n        }\n\n        std::cout &lt;&lt; \"\\nArchivos duplicados encontrados:\\n\";\n\n        for (const auto&amp; &#91;hash, listaArchivos] : mapaHashes) {\n            if (listaArchivos.size() > 1) {\n                std::cout &lt;&lt; \"\\nDuplicados:\\n\";\n                for (const auto&amp; ruta : listaArchivos) {\n                    std::cout &lt;&lt; \" - \" &lt;&lt; ruta &lt;&lt; std::endl;\n                }\n            }\n        }\n\n    } catch (const fs::filesystem_error&amp; e) {\n        std::cerr &lt;&lt; \"Error: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    return 0;\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Este programa analiza un directorio (y sus subdirectorios), calcula un hash del contenido de cada archivo y detecta<\/p>\n","protected":false},"author":2,"featured_media":119,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59],"tags":[60],"class_list":["post-124","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigos","tag-c"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=124"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/124\/revisions"}],"predecessor-version":[{"id":125,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/124\/revisions\/125"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/119"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}