Comando diff de Linux

Linux 命令大全Guía completa de comandos de Linux

El comando diff de Linux se utiliza para comparar las diferencias entre archivos.

diff compara línea por línea las similitudes y diferencias de archivos de texto. Si se especifica comparar directorios, diff compara los archivos con el mismo nombre en los directorios, pero no comparará los subdirectorios dentro de ellos.

Sintaxis

diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]

Parámetros:

  • -<número de líneas>  Especifica cuántas líneas de texto se deben mostrar. Este parámetro debe usarse junto con los parámetros -c o -u.
  • -a o --text  Por defecto, diff solo compara archivos de texto línea por línea.
  • -b o --ignore-space-change  No verifica diferencias en caracteres de espacio.
  • -B o --ignore-blank-lines  No verifica líneas en blanco.
  • -c  Muestra todo el contenido y marca las diferencias.
  • -C<número de líneas> o --context<número de líneas>  Equivalente a ejecutar la opción "-c-<número de líneas>".
  • -d o --minimal  Usa un algoritmo diferente para comparar en unidades más pequeñas.
  • -D<nombre de macro> o ifdef<nombre de macro>  El formato de salida de este parámetro se puede usar para macros de preprocesador.
  • -e o --ed  El formato de salida de este parámetro se puede utilizar para archivos de script de ed.
  • -f o -forward-ed  El formato de salida es similar al archivo de script de ed, pero muestra las diferencias según el orden del archivo original.
  • -H o --speed-large-files  Acelera la comparación de archivos grandes.
  • -I<cadena o carácter> o --ignore-matching-lines<cadena o carácter>  Si dos archivos difieren en varias líneas y estas líneas contienen al mismo tiempo el carácter o la cadena especificados en la opción, no se mostrarán las diferencias entre los dos archivos.
  • -i o --ignore-case  No verifica diferencias de mayúsculas y minúsculas.
  • -l o --paginate  Envía el resultado al programa pr para paginarlo.
  • -n o --rcs  Muestra el resultado de la comparación en formato RCS.
  • -N o --new-file  Al comparar directorios, si el archivo A solo aparece en uno de los directorios, por defecto se mostrará:
  • Only in directorio: archivo A. Si se usa el parámetro -N, diff comparará el archivo A con un archivo en blanco.
  • -p  Si los archivos comparados son archivos de código fuente en C, muestra el nombre de la función donde se encuentra la diferencia.
  • -P o --unidirectional-new-file  Similar a -N, pero solo cuando el segundo directorio contiene un archivo que el primer directorio no tiene, se comparará este archivo con un archivo en blanco.
  • -q o --brief  Solo muestra si hay diferencias o no, sin mostrar información detallada.
  • -r o --recursive  Compara los archivos de los subdirectorios.
  • -s o --report-identical-files  Si no se encuentra ninguna diferencia, aún así muestra información.
  • -S<archivo> o --starting-file<archivo>  Al comparar directorios, comienza la comparación desde el archivo especificado.
  • -t o --expand-tabs  Al generar la salida, expande los caracteres de tabulación.
  • -T o --initial-tab  Agrega un carácter de tabulación al inicio de cada línea para alinearla.
  • -u, -U<número de líneas> o --unified=<número de líneas>  Muestra las diferencias del contenido de los archivos de forma unificada.
  • -v o --version  Muestra información de versión.
  • -w o --ignore-all-space  Ignora todos los caracteres de espacio en blanco.
  • -W<ancho> o --width<ancho>  Especifica el ancho de la columna al usar el parámetro -y.
  • -x<nombre de archivo o directorio> o --exclude<nombre de archivo o directorio>  No compara los archivos o directorios especificados en la opción.
  • -X<archivo> o --exclude-from<archivo>  Puede guardar tipos de archivos o directorios en un archivo de texto, y luego especificar este archivo de texto en =<archivo>.
  • -y o --side-by-side  Muestra las similitudes y diferencias de los archivos de forma lado a lado.
  • --help  Muestra la ayuda.
  • --left-column  Al usar el parámetro -y, si una línea es igual en ambos archivos, solo muestra esa línea en la columna izquierda.
  • --suppress-common-lines  Al usar el parámetro -y, solo muestra las diferencias.

Ejemplo 1: Comparar dos archivos

[root@localhost test3]# diff log2014.log log2013.log 
3c3
< 2014-03
---
> 2013-03
8c8
< 2013-07
---
> 2013-08
11,12d10
< 2013-11
< 2013-12

Los "3c3" y "8c8" anteriores indican que los archivos log2014.log y log20143log tienen contenido diferente en las líneas 3 y 8; "11,12d10" indica que el primer archivo tiene dos líneas más (líneas 11 y 12) que el segundo archivo.

Ejemplo 2: Salida en formato lado a lado

[root@localhost test3]# diff log2014.log log2013.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2014-03               | 2013-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-07               | 2013-08
2013-09                 2013-09
2013-10                 2013-10
2013-11               <
2013-12               <
[root@localhost test3]# diff log2013.log log2014.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2013-03               | 2014-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-08               | 2013-07
2013-09                 2013-09
2013-10                 2013-10
                      > 2013-11
                      > 2013-12

Explicación:

  • "|" indica que el contenido de los dos archivos (anterior y posterior) es diferente.
  • "<" indica que el archivo posterior tiene una línea menos que el archivo anterior.
  • ">" indica que el archivo posterior tiene una línea más que el archivo anterior.

Linux 命令大全Guía completa de comandos de Linux

Otras extensiones