title: Findrepe
text: # Findrepe
  
  findrepe es un programa para escanear directorios en busca de ficheros duplicados, con opciones para listarlos y borrarlos. Primero compara los tamaños de los ficheros y posteriormente las firmas MD5 y SHA1 (ambos a la vez con el fin de evitar colisiones que de falsos positivos), no se realiza verificación byte-a-byte.
  findrepe está escrito en Java y liberado bajo la licencia GPLv3.
  
  # Findrepe
  ## Historia
  
  La primera versión de findrepe fue creada en C/C++ y publicada el 5 de julio de 2004, su única opción era '-d', fue abandonada desde entonces y lo único que perdura es la idéa de comparar tamaños y firmas MD5. Solo existió para windows y funciona correctamente en GNU/Linux+Wine. Se publicó sin licencia, como programa privado (no confundir con privativo). Fue desarrollado con C++Builder sobre windows.
  La revisión actual de findrepe fue creada en Java y su primera versión se publicó el 15 de marzo de 2009. Su desarrollo se realiza con Netbeans sobre GNU/Linux (ubuntu 9.10) y su funcionamiento verificado sobre OpenSolaris, Windows XP y Windows 7 y Mac OS X.
  
  # Findrepe
  ## Objetivos
  
  El objetivo de findrepe es encontrar rápidamente archivos duplicados y está optimizado para usar la opción de borrado, creando los primeros resultados lo más pronto posible para seguir trabajando en segundo plano mientras el usuario decide si borrar alguno de los duplicados. Otro de los objetivos es la "suavidad", es decir, no bloquear el resto de programas que se ejecutan en la máquina, a fin de permitir al usuario trabajar mientras se genera algún resultado.
  
  # Findrepe
  ## Internacionalización
  
  A pesar de que el autor del programa es Español, actualmente solo existe versión en inglés, aunque está prevista su internacionalización en próximas versiones.
  
  # Findrepe
  ## Opciones
  
  modo parlanchín, aumenta el número de mensajes que se muestran indicando lo que se está haciendo, un nivel por cada uso (ej: -vvv)
  muestra fecha, hora y la pila de llamadas en los mensajes como un logger de java cualquiera.
  muestra la licencia que actualmente es GPLv3 o superior
  permite borrar los resultados de forma interactiva, siendo conservador en su funcionamiento
  Los ficheros son marcados automáticamente para borrar (a falta de confirmación) cuando están dentro de la ruta indicada y existen copias fuera no marcadas. Pueden indicarse rutas que contengan a otras, marcándose entonces aquellos ficheros con más aciertos.
  excluye los archivos vacíos de la búsqueda
  permite seguir los enlaces simbólicos en la búsqueda.
  excluye ficheros que no alcancen un tamaño mínimo
  excluye ficheros que superen un tamaño máximo
  excluye resultados que no estén malgastando un tamaño mínimo equivalente al tamaño total menos una de las copias.
  muestra el tamaño redondeado de cada fichero usando unidades de magnitud para facilitar su lectura.
  instala un lanzador usando el comando java
  instala un lanzador usando el comando java permitiendo indicar una ruta absoluta
  instala un lanzador usando el java permitiendo indicar una ruta absoluta del directorio home de java
  instala en sistemas posix no soportados
  instala un lanzador añadiendo la versión al nombre lo que permite tener varias versiones instaladas.
  muestra solo resultado no duplicados
  excluye resultados que no estén duplicados un número exacto de veces
  excluye resultados que no estén duplicados un número mínimo de veces
  excluye resultados que estén duplicados más de un número máximo de veces
  no realiza la autoexclusión de determinadas rutas.
  excluye determinadas rutas de la búsqueda
  excluye el contenido de los directorios con un nombre determinado
  excluye el contenido de los ficheros con un nombre determinado
  excluye el contenido de los directorios de control de versiones, conocidos
  excluye el contenido de los directorios .svn (subversion)
  excluye el contenido de los directorios CVS (cvs)
  excluye el contenido de los directorios y ficheros de control de mercurial
  indica una ruta de interés, hace que se excluyan resultados en los que al menos una de las copias no está en alguna de las rutas indicadas.
  indica un nombre de directorio de interés, hace que se excluyan resultados en los que al menos una de las copias no está contenida en algún nivel en un directorio de los indicados.
  indica un nombre de fichero de interés, hace que se excluyan resultados en los que al menos una de las copias no cumple uno de los criterios indicados.
  indica un nombre de directorio obligatorio, ignora los ficheros que no están contenidos en algún nivel en un directorio de los indicados.
  indica un nombre de fichero obligatorio, ignora los ficheros que no cumplen algún criterio de los indicados.
  busca dentro de los ficheros zip y jar de forma recursiva (y se irán añadiendo tgz y otros en futuras versiones).
  excluye los ficheros que no se buscarían sin la opción --zip
  establece la expresiones regulares (de java) como formato para los patrones
  establece los comodines como formato para los patrones, es la opción por defecto
  establece el límite de hilos (threads) que pueden realizar la tarea, pueden indicarse entre 0 y 1024. 0 indica que se realice de forma secuencial, esto puede ser un problema cuando el número de ficheros es demasiado grande. Por defecto el número de hilos máximo es calculado según el número de núcleos o procesadores disponibles según la fórmula (N*2+N+N/2).
  muestra ficheros con problemas para ser manejados debido a un bug de java al tratar nombres de fichero no-unicode. No afecta a usuarios de Windows.
  permite corregir los nombre de ficheros que se muestran con la opción --bug. No afecta (ni funcionará) a usuarios de Windows.
  muestra la versión
  muestra algunos ejemplos de uso
  muestra la ayuda
  
  # Findrepe
  ## Programas similares
  
  Otros programas que pueden encontrar duplicados y funciona bajo *nix:
  * fdupes fdupes
  * duff
  * dupmerge - funciona en varias plataformas (Win32/64 with Cygwin, *nix, Linux etc.)
  * fdf - Basado en Perl/c y funciona en la mayoría de plataformas (Win32, *nix y probablemente otras). Usa MD5, SHA1 y otros algoritmos de suma de control.
  * freedup - POSIX C compliant y funciona en varias plataformas (Windows with Cygwin, Linux, AIX, etc)
  * freedups - perl script
  * fslint - tiene interfaz de línea de comandos y GUI.
  * liten - Herramienta de línea de comandos de desduplicación en Python puro, y biblioteca, usando sumas de control md5 y un nuevo algoritmo de comparación de bytes. (Linux, Mac OS X, *nix, Windows)
  * rdfind
  * fdupe - perl script
  * ua - Herramienta de línea de comandos Unix/Linux, diseñado para trabajar con find (y similares).