si tienes vim instalado, prueba esto:
vimdiff file1 file2
o
vim -d file1 file2
lo encontrarás fantástico.
Prueba sdiff
(man sdiff
)
sdiff -s file1 file2
Si prefiere el estilo de salida diferencial de git diff
, puedes usarlo con el --no-index
bandera para comparar archivos que no están en un repositorio de git:
git diff --no-index a.txt b.txt
Usando un par de archivos con alrededor de 200k cadenas de nombre de archivo en cada uno, hice una evaluación comparativa (con el time
integrado comando) este enfoque frente a algunas de las otras respuestas aquí:
git diff --no-index a.txt b.txt
# ~1.2s
comm -23 <(sort a.txt) <(sort b.txt)
# ~0.2s
diff a.txt b.txt
# ~2.6s
sdiff a.txt b.txt
# ~2.7s
vimdiff a.txt b.txt
# ~3.2s
comm
parece ser el más rápido con diferencia, mientras que git diff --no-index
parece ser el enfoque más rápido para la salida de estilo diff.
Actualización 2018-03-25 De hecho, puede omitir el --no-index
marca a menos que esté dentro de un repositorio de git y desee comparar archivos sin seguimiento dentro de ese repositorio. De las páginas man:
Este formulario es para comparar las dos rutas dadas en el sistema de archivos. Puede omitir la opción --no-index cuando ejecuta el comando en un árbol de trabajo controlado por Git y al menos uno de los puntos de ruta fuera del árbol de trabajo, o cuando ejecuta el comando fuera de un árbol de trabajo controlado por Git.
Ordenarlos y usar comm
:
comm -23 <(sort a.txt) <(sort b.txt)
comm
compara los archivos de entrada (ordenados) y, de forma predeterminada, genera tres columnas:líneas que son exclusivas de a, líneas que son exclusivas de b y líneas que están presentes en ambos. Especificando -1
, -2
y/o -3
puede suprimir la salida correspondiente. Por lo tanto comm -23 a b
enumera solo las entradas que son exclusivas de a. Yo uso el <(...)
sintaxis para ordenar los archivos sobre la marcha, si ya están ordenados, no necesita esto.