Comando diff de 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.