Estoy utilizando diff -r a ba 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-dereferenceopción, como se describe en la respuesta de Pete Harlan .Desafortunadamente, las versiones anteriores de
diffno 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 usarfindpara 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:
rsyncescenario.fuente
for f inencontrar 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
diffno 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-dereferenceopción; No hay una opción corta para eso.El diagnóstico será silencioso si es igual o:
Enlaces simbólicos
/tmp/noderef/a/symlinky/tmp/noderef/b/symlinkdiferentesfuente
Puedes usar una versión más nueva de
diffEl
diffGNUdiffutils3.3 incluye una--no-dereferenceopció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