Estoy utilizando diff -r a b
a los directorios de forma recursiva comparar una y b . A menudo sucede a pesar de que hay algunos enlaces rotos (los mismos enlaces rotos en tanto una y b directorios y apuntando a los mismos objetivos existentes, no).
diff luego envía mensajes de error para esos casos y sale con un código de salida distinto de cero, sin embargo, me gustaría que permanezca en silencio y salga con 0 ya que los directorios son los mismos en mi libro.
¿Cómo puedo hacer eso?
Respuestas:
Para la versión 3.3 o posterior
diff
, debe usar la--no-dereference
opción, como se describe en la respuesta de Pete Harlan .Desafortunadamente, las versiones anteriores de
diff
no admiten ignorar enlaces simbólicos :Si todo lo que desea es verificar un rsync (y presumiblemente arreglar lo que falta), entonces puede ejecutar el comando rsync por segunda vez. Si no desea hacer eso, entonces la suma de verificación del directorio puede ser suficiente.
Si realmente desea hacer esto
diff
, puede usarfind
para omitir los enlaces simbólicos y ejecutar diff en cada archivo individualmente. Pasar los directorios de una y b como argumentos:o como una línea:
Esto identificará archivos que difieren en contenido, o archivos que están en a pero no en b .
Tenga en cuenta que:
rsync
escenario.fuente
for f in
encontrar un / *! -tipo l;do echo $f b/${f#*/};done
. Sin embargo, no tengo tiempo para probar esto ahora. Avísame si eso funciona.$(xxx)
lugar de backticks. La simetría de Backticks los hace menos legibles y evita el anidamiento. Con respecto a 1 y 2 ver stackoverflow.com/questions/11366184/…Desde la versión 3.3, GNU
diff
no admite la desreferenciación de enlaces simbólicos, pero luego compara las rutas a las que apuntan.Instale GNU
diffutils
> = 3.3 y use la--no-dereference
opción; No hay una opción corta para eso.El diagnóstico será silencioso si es igual o:
Enlaces simbólicos
/tmp/noderef/a/symlink
y/tmp/noderef/b/symlink
diferentesfuente
Puedes usar una versión más nueva de
diff
El
diff
GNUdiffutils
3.3 incluye una--no-dereference
opción que le permite comparar los enlaces simbólicos en sí mismos en lugar de sus objetivos. Informa si difieren, es silencioso si están de acuerdo y no le importa si están rotos.No sé cuándo se agregó la opción; No está presente en 2.8.1.
fuente