Comparación de directorios y uso de otras herramientas de comparación
Además de comparar archivos individuales, Linux proporciona herramientas para comparar directorios enteros y ofrece herramientas de comparación alternativas que pueden ser más adecuadas para ciertos escenarios.
Comparación de directorios con diff
El comando diff también puede comparar directorios utilizando la opción -r (recursiva):
Creemos dos directorios con algunos archivos para comparar:
mkdir -p /home/labex/project/dir1
mkdir -p /home/labex/project/dir2
## Create files in the first directory
echo "This is file 1" > /home/labex/project/dir1/file1.txt
echo "This is file 2" > /home/labex/project/dir1/file2.txt
echo "This is file 3" > /home/labex/project/dir1/file3.txt
## Create similar files in the second directory with some differences
echo "This is file 1 - modified" > /home/labex/project/dir2/file1.txt
echo "This is file 2" > /home/labex/project/dir2/file2.txt
## Note: file3.txt is missing from dir2
echo "This is a new file" > /home/labex/project/dir2/file4.txt
Ahora, comparemos estos directorios:
diff -r /home/labex/project/dir1 /home/labex/project/dir2
Deberías ver una salida similar a:
diff -r /home/labex/project/dir1/file1.txt /home/labex/project/dir2/file1.txt
1c1
< This is file 1
---
> This is file 1 - modified
Only in /home/labex/project/dir1: file3.txt
Only in /home/labex/project/dir2: file4.txt
Esta salida muestra:
- La diferencia de contenido en
file1.txt
file3.txt existe solo en dir1
file4.txt existe solo en dir2
file2.txt es idéntico en ambos directorios (por lo que no se reporta ninguna diferencia)
Uso del comando diff3
Cuando necesites comparar tres archivos (por ejemplo, cuando fusiones cambios de múltiples fuentes), puedes usar el comando diff3:
Creemos un tercer archivo de configuración con sus propios cambios:
echo "## Configuration File for Robot Arm" > /home/labex/project/files/config5.txt
echo "motor_speed = 100" >> /home/labex/project/files/config5.txt
echo "acceleration = 30" >> /home/labex/project/files/config5.txt
echo "max_rotation = 180" >> /home/labex/project/files/config5.txt
Ahora usa diff3 para comparar los tres archivos:
diff3 /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt /home/labex/project/files/config5.txt
El formato de salida de diff3 es un poco más complejo, pero muestra cómo cada archivo difiere de los demás, lo cual es útil para resolver conflictos de fusión.
Uso del comando colordiff
La utilidad colordiff es un envoltorio (wrapper) para diff que produce la misma salida pero con resaltado de sintaxis en color, lo que la hace más fácil de leer.
Primero, instalemos colordiff:
sudo apt-get update && sudo apt-get install -y colordiff
Ahora comparemos nuestros archivos usando colordiff:
colordiff /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt
La salida será similar al comando diff normal, pero con resaltado de color para las líneas agregadas, eliminadas y cambiadas.
Uso del comando wdiff
El comando wdiff (diferencia de palabras) compara archivos palabra por palabra en lugar de línea por línea, lo que puede ser más útil para prosa o documentación:
Instalemos wdiff:
sudo apt-get update && sudo apt-get install -y wdiff
Creemos dos archivos con cambios en las frases:
echo "The robot arm moves quickly and efficiently." > /home/labex/project/files/sentence1.txt
echo "The robot arm moves slowly but efficiently." > /home/labex/project/files/sentence2.txt
Ahora compáralos con wdiff:
wdiff /home/labex/project/files/sentence1.txt /home/labex/project/files/sentence2.txt
Deberías ver una salida que resalte las palabras cambiadas:
The robot arm moves [-quickly and-] {+slowly but+} efficiently.
Las diferentes herramientas de comparación en Linux sirven para diversos propósitos y escenarios:
diff para comparación general de archivos
diff -r para comparación de directorios
diff3 para comparación de tres vías
colordiff para salida con resaltado de color
wdiff para comparación palabra por palabra
Al elegir la herramienta adecuada para tus necesidades específicas, puedes hacer que la comparación de archivos sea más efectiva y eficiente.