Linux : ¿cómo puedo comparar 2 archivos o 2 carpetas con el comando diff?
Table of Contents
I. Introducción
En Linux, existe un comando muy simple y efectivo para comparar dos archivos: diff. En este tutorial, aprenderemos a usarlo para identificar la diferencia entre dos archivos, lo que puede ser útil, por ejemplo, al comparar 2 versiones de un script o archivo de configuración.
Si estás listo para descubrir algunos ejemplos de cómo usar el comando "diff" en Linux, sigue leyendo. Por mi parte, voy a utilizar una máquina que ejecuta Ubuntu, pero este comando funciona con otras distribuciones.
II. sintaxis del comando diff
Empecemos con la sintaxis del comando diff:
diff archivo1 archivo2 [options]
Este comando devolverá un resultado que debe interpretarse como sigue:
- Las líneas que comienzan con el símbolo "<" se refieren al contenido del primer
- Las líneas que comienzan con el símbolo ">" se refieren al contenido del segundo fichero.
- Las letras indican cómo debe modificarse el primer fichero para que coincida con el segundo. La salida puede mostrar tres tipos de estado:
- a: añadir
- c: editar
- d: suprimir
Si esto le parece un poco vago en este momento, no se asuste, lo entenderá mejor cuando realice una primera prueba comparativa.
III. Uso del comando diff
En primer lugar, debes saber que el comando diff puede comparar cualquier archivo de texto, ya sean archivos de configuración, scripts Bash o simples archivos de texto. Siempre que el contenido sea accesible en modo texto plano, la herramienta podrá realizar la comparación.
Nota : no se pueden comparar 3 ficheros (o más) con el comando diff.
A. Primeros pasos con diff
Comience creando un archivo llamado "archivo1.txt" con el siguiente contenido:
##########
IT-Connect
##########
www.it-connect.fr
A continuación, cree un archivo llamado "archivo2.txt" con el siguiente contenido:
##########
IT-Connect
##########
> Démo Tuto Linux
La diferencia entre estos dos archivos está en la última línea.
Para comparar estos dos archivos, utilice este comando:
diff archivo1.txt archivo2.txt
Se devuelve el siguiente resultado:
4c4
< www.it-connect.fr
---
> > Démo Tuto Linux
Descifrémoslo línea por línea:
- 4c4 :
Esto significa que hay un cambio ("c" por "cambio") en la línea 4 de ambos archivos. La línea 4 del archivo1.txt ha cambiado y es diferente de la línea 4 del archivo2.txt.
- < www.it-connect.fr :
El símbolo "<"indica contenido presente en archivo1.txt, pero no presente en archivo2.txt. Así, la línea 4 de archivo1.txt contiene "www.it-connect.fr".
- --- :
Esta línea separa las diferencias entre los dos ficheros.
- > > Tutorial de demostración de Linux:
El símbolo ">"indica el contenido correspondiente en archivo2.txt, pero que no está presente en archivo1.txt. Así, la línea 4 de archivo2.txt contiene "Linux tutorial demo".
En resumen, obtenemos lo siguiente:

B. ¿Qué ocurre con los archivos idénticos?
Cuando realizamos una comparación con diff y los dos ficheros son idénticos, ¡no hay retorno a la consola ! Digamos que este es el comportamiento por defecto del comando. Si añadimos la opción "-s", aparece un mensaje indicando claramente que estos 2 ficheros son idénticos.
diff archivo1.txt archivo2.txt -s
Obtenemos el siguiente resultado:
The files archivo1.txt and archivo2.txt are identical.

C. El comando diff y el caso
Por defecto, el comando diff distingue entre mayúsculas y minúsculas, es decir, considerará que dos archivos son diferentes si distinguen entre mayúsculas y minúsculas. Para no tener en cuenta mayúsculas y minúsculas, utilice la opción "-i". He aquí un ejemplo:
diff archivo1.txt archivo2.txt -i
# o
diff archivo1.txt archivo2.txt -is
Lo que da:

D. No tener en cuenta los saltos de línea
Por defecto, el comando diff es especialmente sensible, ya que tiene en cuenta mayúsculas y minúsculas y los saltos de línea (líneas vacías). Para evitar que los saltos de línea vacíos se consideren diferencias, podemos utilizar la opción "-B ", como se indica a continuación:
diff archivo1.txt archivo2.txt -B
La imagen siguiente muestra la diferencia en los resultados, dependiendo del uso de la opción "-B ". Por supuesto, puede combinar estas distintas opciones.

E. Cambiar el modo de visualización
El comando diff admite varios modos de visualización que repercutirán en el formato del resultado en la consola. La opción "-c" permite especificar las diferencias con mayor precisión colocando un símbolo delante de las líneas en cuestión.
Basta con especificar la opción de la siguiente manera:
diff archivo1.txt archivo2.txt -c
Con archivo1.txt con este contenido :
##########
IT-Connect
##########
Rendez-vous sur IT-Connect :
www.it-connect.fr
Y, el archivo2.txt con este contenido :
# Démo
##########
IT-Connect
##########
# Tuto
# Linux
Obtenemos este resultado:
*** archivo1.txt 2025-01-16 16:18:32.817171261 +0100
--- archivo2.txt 2025-01-16 16:19:44.665177050 +0100
***************
*** 1,5 ****
##########
IT-Connect
##########
! Rendez-vous sur IT-Connect :
! www.it-connect.fr
--- 1,6 ----
+ # Démo
##########
IT-Connect
##########
! # Tuto
! # Linux
Esto es lo que debe saber:
- Las dos primeras líneas indican la fecha y horade los dos archivos comparados.
- La línea "*** 1,5 ****" indica el intervalo de líneas analizadas (de la línea 1 a la línea 5).
Luego hay un símbolo delante de las líneas que representan una diferencia entre los dos ficheros:
- Símbolo"-": la línea debe borrarse del primer archivo.
- Símbolo "+": la línea debe añadirse al primer archivo.
- Símbolo "!": la línea debe sustituirse por la línea correspondiente del segundo archivo.
Por ejemplo, esto significa que la línea"# Demo" debe añadirse al primer archivo para que haya una coincidencia exacta. Esto se explica por la presencia del carácter "+ ": "+ # Demo".
Aquí está el ejemplo completo en imágenes:

Para obtener una salida más compacta que siga la misma lógica, puede utilizar la opción "-u":
diff archivo1.txt archivo2.txt -u
F. Comparar 2 archivos con diff
Además de comparar 2 archivos con diff, también puede comparar el contenido de 2 carpetas. Así, puede identificar archivos y carpetas presentes en el directorio 1, pero no en el directorio 2, y viceversa. Para ello, basta con utilizar la opción "-q".
diff doc1/ doc2/ -q
Seulement dans doc1/: archivo2.txt
Seulement dans doc1/: archivo3.txt
Seulement dans doc2/: archivo5.txt
Aquí está el ejemplo completo:

IV. Conclusión
Después de leer este tutorial, sabrás cómo utilizar el comando diff en Linux, ¡ya sea para comparar el contenido de 2 archivos o de 2 directorios! Si quieres saber aún más, echa un vistazo a la ayuda de este comando:
diff --help