Cómo comparar dos textos y directorios para ver diferencias en Linux

Última actualización: 12/12/2025
Autor: Isaac
  • En Linux podemos comparar archivos y directorios con herramientas en consola como diff, sdiff, cmp, comm o vimdiff, y con interfaces gráficas como Meld o Diffuse.
  • El comando diff permite ver diferencias línea a línea, ignorar espacios, mayúsculas o líneas en blanco, y comparar recursivamente directorios completos con opciones como -r, -q o -y.
  • Las herramientas gráficas como Meld facilitan la comparación y fusión de ficheros y carpetas con colores y flechas, e incluso se integran con sistemas de control de versiones.

Herramientas para comparar textos en Linux

Cuando trabajas a diario con Linux y ficheros de texto, tarde o temprano te ves en la situación de tener que comprobar si dos archivos o dos directorios son exactamente iguales. Puede ser tras una migración de datos, al actualizar una aplicación, al revisar copias de seguridad o, simplemente, al comparar dos versiones de un mismo script o documento.

Este tipo de tareas, que a simple vista pueden parecer un tostón si las haces “a ojo”, se vuelven muy sencillas si dominas unas cuantas herramientas de comparación de ficheros y directorios. En Linux las opciones van desde comandos clásicos como diff, sdiff o comm, hasta utilidades gráficas como Meld o Diffuse, pasando por editores como vimdiff o wrappers coloreados como colordiff.

Cuándo y por qué comparar textos y directorios en Linux

Comparar directorios y archivos en Linux

Un caso muy típico es cuando haces una migración de tu nube personal o de un servidor y quieres asegurarte de que todo ha viajado correctamente. Imagina que pasas de Nextcloud a otra solución como Filerun: copias tu información, aparentemente todo va bien, pero al revisar la copia antigua ves que hay más ficheros que en el nuevo destino.

En lugar de navegar durante horas por los directorios intentando encontrar qué falta, lo lógico es tirar de terminal y lanzar un comando que detecte diferencias entre dos árboles de directorios. En este terreno, el rey absoluto es diff, que te permite comparar tanto directorios completos como archivos individuales, y además ofrece un montón de parámetros para ajustar la salida.

También es habitual necesitar estas comparaciones al gestionar versiones de scripts, archivos de configuración o documentos. Los desarrolladores usan a diario estas herramientas para ver qué ha cambiado entre una versión y otra de un fichero, e incluso para preparar parches o integrarlo con sistemas de control de versiones como Git, Mercurial o Bazaar.

Por último, si administras sistemas o analizas logs, te conviene dominar al menos los comandos básicos, porque a menudo tocará comparar logs locales con logs remotos, o revisar cambios de configuración en máquinas a las que accedes sólo por SSH, donde no tienes a mano herramientas gráficas.

Usar diff para comparar directorios en Linux

El comando diff no sirve sólo para comparar textos: también puede comparar estructuras de directorios de forma recursiva. Esto es muy práctico para validar migraciones de datos o sincronizaciones de copias de seguridad.

La forma más cómoda de comparar dos directorios completos es usando estas opciones:

diff -rq 'directorio1' 'directorio2'

En este ejemplo, diff es la utilidad de comparación, -r le indica que baje por todos los subdirectorios de forma recursiva, y -q hace que solo muestre en pantalla los ficheros y carpetas que presentan diferencias entre uno y otro lado, evitando ruido innecesario.

Por ejemplo, para contrastar el contenido de tu nube nueva con la copia antigua podrías usar algo tipo:

diff -rq '/home/usuario/Filerun/@Home' '/media/DATOS/copia_nextcloud'

La salida será una lista donde se indican ficheros presentes sólo en uno de los directorios (con mensajes del tipo “Sólo en /ruta: nombre_fichero”) o ficheros que existen en ambos pero cuyo contenido no coincide. Es una forma muy clara de detectar:

  • Archivos temporales u ocultos (por ejemplo, ficheros .git o bloqueos .~lock.) que se han quedado en un lado.
  • Carpetas vacías que quizá una aplicación no ha subido a la nube.
  • Cambios reales en documentos, imágenes o scripts, que sí deberías revisar con calma.

En estos escenarios no siempre es un problema que falten cosas: a veces la propia herramienta de sincronización ignora archivos temporales, de bloqueo o directorios vacíos, y eso es totalmente aceptable. Pero gracias a diff puedes ver exactamente qué elementos no coinciden y decidir qué hacer con ellos.

Comparar dos archivos con diff: binarios y texto

El uso más conocido de diff es la comparación de dos ficheros para ver qué partes del contenido han cambiado. Aquí hay que distinguir entre archivos de texto (donde puede detallar línea a línea) y ficheros binarios, donde sólo indicará si son iguales o no.

  Cómo poner un vídeo como fondo de pantalla en Windows: guía completa y trucos

Comprobar si dos archivos binarios son iguales

Si quieres saber si dos documentos en formato ODT, DOC, PDF, MP4 u otros binarios son idénticos, puedes lanzar un diff simple con las rutas de ambos archivos:

diff '/home/usuario/Documento_V1.odt' '/home/usuario/Documento_V2.odt'

Si los documentos son iguales, no habrá ninguna salida en pantalla. En caso de que exista cualquier diferencia interna, diff mostrará un mensaje tipo:

Los ficheros binarios Documento_V1.odt y Documento_V2.odt son distintos

En estos casos, como no se trata de texto plano, diff no puede mostrarte qué ha cambiado exactamente, sólo avisa de que el contenido interno difiere. Para comparar en detalle dos ODT, por ejemplo, te tocaría usar LibreOffice y su propia función de comparación de documentos.

Comparar a fondo dos ficheros de texto o Markdown

Cuando trabajas con ficheros de texto plano, scripts, configuración o Markdown, diff sí puede detallar al milímetro las diferencias. La sintaxis básica es:

diff archivo1 archivo2

Supón que tienes dos versiones de un fichero Markdown:

  • /home/usuario/archivo_1.md
  • /home/usuario/archivo_2.md

Al ejecutar:

diff '/home/usuario/archivo_1.md' '/home/usuario/archivo_2.md'

obtendrás una salida en la que cada bloque de cambios sigue este esquema:

linea_fichero_1 tipo_de_cambio linea_fichero_2
< contenido_en_el_primer_fichero
---
> contenido_en_el_segundo_fichero

En este formato clásico, los elementos clave son:

  • número_de_línea_fichero_1: línea (o rango de líneas) del primer archivo que interviene en el cambio.
  • tipo_de_cambio: puede ser a (add, añadir), c (change, cambiar) o d (delete, borrar).
  • número_de_línea_fichero_2: línea (o rango) del segundo archivo afectada por el cambio.
  • <: marca las líneas tal y como aparecen en el primer fichero.
  • >: marca las líneas correspondientes en el segundo fichero.

Por ejemplo, si ves algo como:

9c9
< Para usar GEEKLAND y obtener la diferencias existentes entre dos directorios...
---
> Para usar Diff y obtener la diferencias existentes entre dos directorios...

significa que la línea 9 del primer fichero ha cambiado respecto a la línea 9 del segundo. Inmediatamente debajo < te enseña el contenido original y > el contenido modificado, de modo que puedes ver el cambio de golpe.

Si aparece algo del estilo:

18a19
> * -q: Para que la salida del comando diff únicamente muestre las diferencias...

se interpreta como que, comparando el segundo fichero con el primero, después de la línea 18 del archivo 2 se ha añadido una nueva línea 19 cuyo contenido se muestra tras el símbolo >.

Ver las diferencias de forma más visual con diff -y

Si te resulta lioso leer la notación clásica, diff ofrece un modo más gráfico utilizando la opción -y para mostrar dos columnas lado a lado. Además, puedes numerar las líneas con cat -n para ubicarte mejor:

diff -y '/ruta/archivo1.md' '/ruta/archivo2.md' | cat -n

En este modo, se muestran los dos ficheros en paralelo, con una columna central que usa símbolos para marcar las diferencias. Así resulta muy evidente qué líneas cambian, se añaden o se eliminan.

Si quieres centrarte solo en las líneas diferentes, puedes añadir la opción --suppress-common-lines:

diff -y --suppress-common-lines 'archivo1.md' 'archivo2.md'

De este modo desaparecen las líneas idénticas y sólo ves lo que realmente ha cambiado entre ambos textos, algo muy práctico cuando el fichero es largo y la mayoría del contenido es igual.

Principales opciones de diff para afinar comparaciones

El comando diff tiene una buena colección de parámetros que permiten adaptar la comparación según lo que te interese: ignorar espacios, mayúsculas, líneas en blanco, o cambiar el formato de salida.

Entre las opciones más habituales (además de -r, -q y -y) destacan:

  • -s: sólo notifica cuando dos ficheros son idénticos, útil si necesitas confirmar coincidencias.
  • -i: ignora diferencias de mayúsculas y minúsculas en el contenido textual.
  • -b: compara ignorando espacios en blanco simples.
  • -E: pasa por alto diferencias de tabulaciones entre archivos.
  • -Z: ignora espacios al final de línea, muy útil en código.
  • -B: no tiene en cuenta las líneas en blanco al comparar.
  • --no-dereference: evita seguir enlaces simbólicos cuando comparas directorios.
  • --ignore-file-name-case: ignora diferencias de mayúsculas/minúsculas en los nombres de fichero (al comparar listados o directorios).
  • --no-ignore-file-name-case: fuerza a que sí se tengan en cuenta esas diferencias de nombre.
  • --suppress-common-lines: con -y, oculta las líneas iguales y se centra en las distintas.

Si quieres ir más allá y ver todas las posibilidades, basta con consultar la página de manual de diff:

man diff

Ahí encontrarás opciones menos habituales, como excluir determinados patrones de nombre, modificar el formato de salida (por ejemplo, formato unificado -u para parches) o ajustar el tamaño de contexto que se muestra alrededor de cada cambio.

  ¿Cómo se hace una captura de pantalla de un vídeo de YouTube?

diff para comparar carpetas en profundidad

Además del ejemplo básico con -rq, puedes combinar varias opciones para afinar la comparación de directorios. Por ejemplo, si quieres ignorar diferencias de mayúsculas en nombres de archivo y no seguir enlaces simbólicos, podrías hacer algo así:

diff -rq --no-dereference --ignore-file-name-case dir1 dir2

También es posible usar diff -r sin -q para que, además de avisarte de qué ficheros difieren, te muestre el detalle de las diferencias de contenido cuando se trata de archivos de texto. Eso sí, en directorios muy grandes la salida puede ser bastante extensa.

Para muchos administradores, comparar directorios recursivamente se vuelve una tarea de rutina: comprobar que la copia de seguridad está completa, revisar si una carpeta de configuración en un servidor es igual que en otro, o verificar que dos ramas de un proyecto contienen la misma estructura de ficheros.

Otras herramientas de consola para comparar textos en Linux

Aunque diff es la utilidad estrella, el ecosistema de Linux ofrece otros comandos muy útiles para comparar archivos línea a línea. Algunos añaden vistas en paralelo, otros requieren que los archivos estén ordenados, y otros aprovechan editores de texto avanzados.

sdiff: comparación lado a lado en modo texto

El comando sdiff es ideal si quieres ver dos archivos en paralelo en la terminal, con una barra vertical que indica dónde hay diferencias:

sdiff f1.txt f2.txt

En la salida, verás cada línea del primer fichero a la izquierda y la correspondiente del segundo a la derecha. Los símbolos más habituales son:

  • |: las dos líneas comparadas son distintas.
  • <: línea que aparece sólo en el primer fichero.
  • >: línea que aparece sólo en el segundo fichero.

Igual que diff, sdiff también acepta opciones como -i para ignorar mayúsculas y minúsculas, con lo que puedes centrarte únicamente en cambios reales de texto y no en variaciones de capitalización.

colordiff: salida coloreada para diff

Leer un diff en blanco y negro puede ser un poco pesado si hay muchos cambios. colordiff es un pequeño wrapper que aplica colores a la salida de diff para hacerla mucho más legible:

colordiff archivo1 archivo2

Normalmente, colordiff utiliza distintos colores para líneas eliminadas, añadidas y modificadas, facilitando la detección de cambios de un vistazo. Además, puedes personalizar los colores editando el archivo de configuración /etc/colordiffrc según tus preferencias.

comm: comparar archivos ordenados y ver líneas comunes

El comando comm es diferente a diff porque funciona sobre archivos ya ordenados línea a línea y produce una salida de tres columnas:

comm f1.txt f2.txt

En la salida encontrarás:

  • Primera columna: líneas únicas del primer fichero.
  • Segunda columna: líneas únicas del segundo fichero.
  • Tercera columna: líneas que aparecen en ambos.

Es muy útil para conjuntos de datos o listados donde quieras saber qué entradas son comunes y cuáles son exclusivas de cada archivo. Eso sí, si los ficheros no están ordenados, comm te avisará y los resultados no serán fiables, así que antes deberías pasarles un sort.

cmp: comparación byte a byte

El comando cmp compara dos archivos byte a byte. Es más bajo nivel que diff, y se utiliza para detectar si dos ficheros (de texto o binarios) son exactamente iguales:

cmp archivo1 archivo2

Si los archivos coinciden, no se muestra nada por pantalla. Si difieren, cmp indica el primer byte distinto y su línea correspondiente en caso de tratarse de texto:

archivo1 archivo2 son distintos: byte 1454, línea 43

Con la opción -b, además de la posición, cmp también muestra el contenido del byte diferente en ambos archivos, lo que puede venir bien para diagnósticos muy precisos.

vimdiff (o vim -d): potencia del editor Vim para comparar

Si usas Vim, te interesará vimdiff, que integra la comparación de archivos directamente dentro del editor. El comando es tan simple como:

vimdiff archivo1 archivo2

o bien:

vim -d archivo1 archivo2

Vim abre los ficheros en varias ventanas, resalta las diferencias y te permite navegar, editar y guardar los cambios usando los comandos habituales de Vim. Además soporta comparaciones remotas vía SSH, por ejemplo:

vimdiff /var/log/secure scp://192.168.1.25/var/log/secure

En este caso, estás comparando un log local con uno remoto a través de SSH; Vim se encarga de pedir credenciales y de mostrar ambos archivos como si los tuvieras en local.

  A continuación te explicamos cómo utilizar y abrir la fiesta de Netflix para ver películas y series en Android y iPhone.

Herramientas gráficas para comparar textos y directorios en Linux

Si no te llevas muy bien con la terminal o simplemente te apetece algo más visual, Linux también ofrece aplicaciones gráficas especializadas en comparación de archivos y carpetas. La más popular es probablemente Meld, pero no es la única.

Meld: interfaz gráfica de diff para ficheros, directorios y proyectos

Meld es básicamente una interfaz gráfica para diff, aunque muy vitaminada. Permite comparar y fusionar archivos, directorios e incluso proyectos bajo sistemas de control de versiones como Git, Mercurial, Bazaar o SVN.

Entre sus características más interesantes destacan:

  • Comparación bidireccional y tridireccional de ficheros y directorios.
  • Función de Auto Merge para combinar cambios automáticamente cuando no hay conflictos graves.
  • Resaltado de sintaxis y gestión básica de archivos desde la propia interfaz.
  • Integración con sistemas de control de versiones y herramientas de línea de comandos como git mergetool.
  • Un código de colores muy claro para marcar líneas añadidas, eliminadas o modificadas.

La instalación es sencilla porque Meld está en los repositorios de la mayoría de distribuciones. Por ejemplo:

  • Debian, Ubuntu, Linux Mint y derivados:
    sudo apt install meld
  • Fedora, CentOS, Alma Linux y similares:
    sudo dnf install meld
  • Arch Linux, Manjaro y derivados:
    sudo pacman -S meld
  • SUSE y openSUSE:
    sudo zypper install meld

Al ejecutarlo, eliges si quieres comparar archivos, directorios o un proyecto bajo control de versiones. Seleccionas el primer elemento, pulsas en “Comparar” y luego eliges el segundo. Meld te mostrará dos (o tres) paneles con el contenido y un código de colores típico: verde para líneas añadidas, rojo para modificadas, gris tachado para eliminadas, etc.

Además, en cada bloque de diferencias verás flechas que permiten copiar cambios de un lado a otro con un solo clic, lo que facilita enormemente sincronizar dos versiones de un archivo sin tener que copiar y pegar manualmente línea por línea.

Diffuse y otras alternativas gráficas

Otra herramienta gráfica interesante es Diffuse, que también permite comparar y editar archivos de texto con resaltado de diferencias. Soporta comparación de múltiples archivos y tiene integración con sistemas de control de versiones.

Para instalar Diffuse en distribuciones basadas en Debian/Ubuntu o Fedora puedes usar:

sudo apt-get install diffuse   # Debian/Ubuntu
sudo dnf install diffuse       # Fedora

Junto a Meld y Diffuse existen otras opciones como DiffMerge (multiplataforma) o plugins integrados en IDEs y editores (VS Code, IntelliJ, etc.) que ofrecen interfaces muy cuidadas para comparar y fusionar código.

Trucos prácticos y consejos al comparar archivos en Linux

La comparación de ficheros no deja de ser una herramienta; lo importante es aplicarla con cabeza según el tipo de datos que tengas. Algunos consejos que te van a ahorrar tiempo son:

  • Si los archivos contienen listados o datos sin orden, puede interesarte ordenarlos primero con sort antes de usar diff o comm, para que la comparación sea más lógica.
  • Para evitar falsos positivos en código, acostúmbrate a usar opciones como -b, -B o -Z, que ignoran espacios en blanco, líneas vacías o espacios al final de línea.
  • Si sólo quieres saber si dos ficheros son iguales sin ver el detalle, diff -q o cmp son más directos que un diff completo.
  • Cuando compares directorios grandes, plantéate usar diff -rq para un primer vistazo, y después profundizar sólo en los ficheros que aparezcan como distintos.
  • En entornos de desarrollo, apóyate en git diff y otras integraciones con sistemas de control de versiones, que ya están pensadas para resaltar cambios relevantes en código.

Dominar estas herramientas de comparación en Linux te permite controlar mejor tus migraciones, localizar errores en configuraciones, revisar cambios en scripts y, en general, trabajar con mucha más seguridad cuando tocas archivos críticos. Con un poco de práctica, utilizarás diff, sdiff, vimdiff, Meld y compañía casi de memoria, y comprobarás que ahorrar tiempo y quebraderos de cabeza al comparar dos textos o directorios es tan sencillo como lanzar un par de comandos bien escogidos.

Cómo comparar y combinar documentos en Word-3
Artículo relacionado:
Cómo comparar y combinar documentos en Word