Inicio > Procesamiento y búsqueda de texto > diff

diff: Guía para comparar diferencias entre archivos/directorios

Compara las diferencias entre dos objetos línea por línea y las muestra en un formato legible (unificado/contexto/lado a lado). Ampliamente utilizado para crear parches, revisar código y comparar cambios de configuración.

Introducción

diff compara los cambios entre dos archivos o directorios, mostrando qué líneas se han añadido/eliminado/modificado. Los formatos de salida pueden ser unificado, de contexto o lado a lado, y se puede ajustar la sensibilidad de la comparación, por ejemplo, ignorando espacios o mayúsculas/minúsculas.

Características principales

  • Comparación línea por línea y formatos legibles para humanos.
  • Comparación recursiva entre directorios (-r).
  • Variedad de reglas para ignorar espacios/mayúsculas/minúsculas/líneas en blanco, etc.
  • Soporte para formato unificado (-u) adecuado para generar parches (.patch).
  • Opciones de optimización del rendimiento para la comparación de archivos grandes.

Ejemplos de escenarios de uso

  • Revisión de código: Extraer solo los archivos modificados como un parche.
  • Seguimiento de cambios en archivos de configuración: Comparar la configuración antes y después del despliegue.
  • Comparación de copias de seguridad/instantáneas: Verificar diferencias entre puntos en el tiempo.
  • Detección de cambios no intencionados en la etapa de preprocesamiento de documentos/datos.
  • Revisión de seguridad: Verificar cambios sospechosos en binarios/scripts desplegados externamente.

Formatos de salida de diff

Los formatos de salida de diff indican las instrucciones para transformar el primer archivo en el segundo.

  • `a` (add): Líneas que no estaban en el primer archivo y que han sido **añadidas** en el segundo. (Ej: `1a2`)
  • `c` (change): Líneas que han sido **modificadas** en ambos archivos. (Ej: `1c2`)
  • `d` (delete): Líneas que estaban en el primer archivo y han sido **eliminadas** en el segundo. (Ej: `1d2`)

Opciones principales

Opciones de uso frecuente agrupadas por propósito.

1) Comportamiento básico y formatos de salida

2) Especificación de alcance/objetivo de comparación

3) Control de salida/Reglas de ignorancia

4) Ayuda/Versión

Comando generado:

Combina los comandos.

Descripción:

`diff` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Escenarios de comparación de uso frecuente organizados como ejemplos.

Generar parche en formato unificado

diff -u old.conf new.conf > change.patch

Comparación recursiva de directorios

diff -ruN ./v1 ./v2

Comparar ignorando diferencias de espacios

diff -uw src_old.c src_new.c

Vista lado a lado + ocultar líneas comunes

diff -y --suppress-common-lines a.txt b.txt

Códigos de salida

Consulte esto al manejar bifurcaciones en scripts.

Valores de estado de salida de diff
Código Significado
0 Los dos objetos son idénticos
1 Hay diferencias
2 Ocurrió un error (error de uso/imposibilidad de acceso al archivo, etc.)

Instalación

Está incluido por defecto en la mayoría de las distribuciones, pero si no lo está, instale el paquete diffutils.

Debian/Ubuntu

sudo apt update && sudo apt install -y diffutils

RHEL/CentOS/Fedora

sudo dnf install -y diffutils

Arch Linux

sudo pacman -S --needed diffutils

openSUSE

sudo zypper install -y diffutils

Consejos y precauciones

Puntos que a menudo se pasan por alto en la práctica.

  • El formato de parche suele usar -u como estándar. Git también utiliza internamente un formato unificado similar.
  • El uso excesivo de las opciones de manejo de espacios en blanco (-w, -b, -B) puede ocultar cambios realmente significativos.
  • Las diferencias de salto de línea entre Windows/Linux se pueden normalizar con `--strip-trailing-cr` para facilitar la comparación.
  • Al comparar directorios, use -r junto con -x/-X (reglas de exclusión) para filtrar archivos innecesarios.
  • Para verificar solo la existencia muy rápidamente, use la opción -q. No mostrará detalles.

comandos relacionados

Son comandos que son funcionalmente similares o que se usan juntos con frecuencia.


Comandos de la misma categoría