Cómo diferenciar directorios para diferentes archivos, pero no línea por línea

16

Quiero ver, recursivamente, archivos que son diferentes en dos directorios. Diff puede hacer esto, pero me muestra las diferencias línea por línea, que no quiero. ¿Hay alguna herramienta que haga esto o una forma de hacerlo con Diff (leí la página del manual, no vi nada)?

usuario13743
fuente

Respuestas:

29

Qué pasa

diff -rq DIR1 DIR2

o

diff -rqb DIR1 DIR2

-r es recursivo

-q es breve y solo le dirá si los archivos son diferentes (es decir, no mostrará las diferencias línea por línea)

-b ignora los espacios en blanco

robar
fuente
1
-b ignora los cambios en el espacio en blanco. Use -q o --brief para la opción breve.
Doug Harris
Y acabo de votar esto. Acabo de probar la breve opción por primera vez. Es una salida muy agradable: muestra no solo qué archivos son diferentes sino que identifica qué archivos existen en un directorio y no en el otro.
Doug Harris
Gracias Doug; Supongo que originalmente tenía mi opción rotada 180 grados. ;) Corregido ahora.
robar
2

Estás buscando la -qopción:

dlamblin$ diff -r a b
diff -r a/a b/a
0a1,2
> 
> 
Only in b: b
dlamblin$ diff -qr a b
Files a/a and b/a differ
Only in b: b
dlamblin
fuente
1

Una forma de hacer esto es hacer

diff dir1 dir1| grep "diff "

Seguirá haciendo una comparación línea por línea, pero cada comparación de archivo comienza con "diff dir1 / file dir2 / file", por lo que el agrupamiento "diff" mostrará solo esas líneas (es decir, los archivos que son diferentes).

usuario13743
fuente
1

Si es un usuario de emacs, consulte los directorios de ediff. Puede ver las diferencias de archivo y luego profundizar en las diferencias línea por línea si necesita ver por qué son diferentes.

Doug Harris
fuente