Cuando se trata de la comparación de archivos, se utiliza principalmente software basado en GUI. Si eres un usuario de Linux, creo que deberías saber cómo comparar dos archivos a través de la línea de comandos, ya que definitivamente es un método rápido una vez que te acostumbras.
En este tutorial, aprenderemos a usar el comando diff a través de algunos ejemplos prácticos.
Comando de diferencias de Linux
Comprendamos el comando diff de Linux a través de algunos ejemplos prácticos.
Supongamos que tenemos estos dos archivos (archivo1 y archivo2):
$ cat file1
Hi,
Hello,
How are you?
I am fine,
Thank you.
$ cat file2
Hello,
Hi,
How are you?
I am fine.
Puede ver que ambos archivos tienen algunas diferencias menores. Ahora, veamos cómo se puede usar el comando diff para resaltar estas diferencias.
Así es como ejecuta el comando diff:
$ diff file1 file2
1d0
< Hi, 2a2 > Hi,
4,5c4
< I am fine,
< Thank you.
---
> I am fine.
Entonces puede ver que el comando diff se proporcionó tanto con los nombres de los archivos como con los argumentos de la línea de comandos y produjo las diferencias en la salida. La salida de ninguna manera es fácilmente comprensible. La razón es que fue diseñado para ser utilizado por computadoras y no por humanos. No obstante, decodifiquemos la salida pieza por pieza:
NOTA - Los archivos archivo1 y archivo2 se tratarán como archivo antiguo y archivo nuevo en el siguiente texto.
1d0
< Hi,
Aquí, la línea 1d0 significa que la primera línea del archivo anterior debe eliminarse (d) para sincronizar ambos archivos que comienzan en la línea 0. La línea que se eliminará en el archivo anterior se menciona justo debajo con
Aquí, la línea 2a2 significa que la segunda línea del archivo nuevo debe agregarse después de la segunda línea del archivo anterior. La línea que se agregará se muestra en la siguiente línea de la salida con la marca>.
Aquí, la línea 4,5c4 significa que los números de línea que van del 4 al 5 en el archivo anterior ahora se cambiaron y deben reemplazarse con la cuarta línea del archivo nuevo. Las líneas que se agregarán y eliminarán están marcadas con> y
Entonces, para concluir,
Además de los archivos, el comando diff también se puede usar para comparar dos directorios. Aprendamos esto a través de un ejemplo.
Aquí está el contenido de un directorio llamado 'new_dir':
y aquí están los contenidos de un directorio llamado 'old_dir':
Ahora, aquí está el resultado cuando se ejecutó el comando diff:
Entonces puede ver que cuando se ejecuta el comando diff para comparar estos dos directorios, muestra fácilmente los archivos que faltan en los directorios.
Estas son algunas de las opciones de línea de comandos más utilizadas:
Si dos archivos contienen el mismo texto pero en casos diferentes, el comando diff aún lo informa como una diferencia por defecto.
Por ejemplo:
Entonces puede ver que el comando diff informó la diferencia de mayúsculas y minúsculas en la salida.
Para salirse con la suya con este comportamiento predeterminado, use la opción -i.
Aquí hay un ejemplo:
Entonces puede ver que no se produjo ningún resultado, que es el comportamiento predeterminado cuando ambos archivos son iguales.
Hacia el final del ejemplo 1, vimos que diff no informa nada si los archivos son iguales. Aunque este comportamiento predeterminado está bien, aún podría confundir a muchos, especialmente a los novatos. Entonces, si desea que el comando diff informe explícitamente que los archivos son iguales, use la opción de línea de comando -s.
Aquí hay un ejemplo:
Entonces puede ver que agregué la opción -s en el comando que usamos en el último ejemplo y esta vez el comando diff informó explícitamente que ambos archivos son idénticos.
Otro caso de uso común es la cantidad variable de espacios para los que el comando diff informa que los archivos son diferentes.
Aquí hay un ejemplo:
Observe que la única diferencia entre los dos archivos es el espacio extra entre las palabras 'son' y 'usted' en el archivo2. Ahora, cuando se usa el comando diff para comparar estos dos archivos, este es el resultado:
Entonces puede ver que el comando diff informó la diferencia. Pero si desea que diff ignore estos espacios, use la opción -b:
Entonces puede ver que debido a la opción -b, el comando diff informó que ambos archivos son iguales.
Consejo de comando:
El siguiente comando mostrará todas las diferencias de archivos entre dos carpetas
El comando diff proporciona muchas más opciones de línea de comandos. Lea su página man para ver la lista completa.2a2
> Hi,
4,5c4
< I am fine,
< Thank you.
---
> I am fine.
$ ls new_dir/
file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt
$ ls orig_dir/
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt test
file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
$ diff new_dir/ orig_dir/
Only in new_dir/: file
Only in orig_dir/: test
1) Use -i para ignorar las diferencias entre mayúsculas y minúsculas
$ cat file1
HI
$ cat file2
hi
$ diff file1 file2
1c1
< HI --- > hi
$ diff -i file1 file2
$
2) Informe que los archivos son iguales usando la opción -s
$ diff -is file1 file2
Files file1 and file2 are identical
3) Use -b para ignorar espacios
$ cat file1
Hi, how are you?
$ cat file2
Hi, how are you?
$ diff file1 file2
1c1
< Hi, how are you?
---
> Hi, how are you?
$ diff -b file1 file2
$
diff -Naur old/ new/