Obra:
diff -r -X <ignore-list> <src-dir> <dest-dir>
no parece hacer diffignorar entradas en <ignore-list>si son de la forma <dir>/<file>.
<fileSin embargo, las entradas del formulario > se consideran. Este es un problema ya que podría tener varios archivos nombrados <file>en diferentes subdirectorios, algunos de los cuales no quiero ignorar.
Tampoco parece haber mucha información sobre la sintaxis del patrón en la página de manual diff. Por lo que puedo decir, es solo el nombre base de un archivo considerado por diff (consulte http://forums.gentoo.org/viewtopic-t-889788-start-0.html si está interesado).

diffla--excludeopción del hombre es una mierda ...Respuestas:
Listado de directorios debería funcionar; por ejemplo, esto es lo que he usado en un script (suponiendo que gnu diff),
... que ignora el contenido
.svny los.gitdirectorios, pero también los archivos individuales llamados*.zip/*.gz/ etc.Editar: para filtrar las rutas del formulario
dir_a/file1pero aún losdiffarchivos con el mismo nombre base, comodir_b/file1odir_a/b/file1, entoncesdiffse tendría que generar una lista de archivos (por ejemplo, usandofind) y el archivo para comparar derivado de estas rutas; por ejemplo, dadogenera la lista de archivos para comparar, excluyendo, por ejemplo,
*/a/2.txtpero aún comparando otros archivos nombrados2.txt. Simplemente "encuentre" todos los archivos exceptoONE/a/2.txt(una expresión regular también se puede usar aquí, como.*/a/2.txt)que en efecto ignora
ONE/a/2.txt(yTWO/a/2.txt), pero aún compara los otros archivos llamados2.txt:Editar: O, más divertido con
find(diversión adicional dejada como un ejercicio para el lector), seleccione los archivos o directorios para excluir y luegodifftodo lo demás:El ejemplo anterior excluye el archivo específico "{top} /a/2.txt", cualquier directorio llamado "b", y todo lo demás está diferido. (En lugar de "
-name b" también podría usar "-regex '.*/b'" - nota, sin seguimiento "/".)fuente
excludepatrones se comparan con el nombre base de los archivos (según gnu.org/software/diffutils/manual/html_node/… ); los caminos no funcionarán (como enfoo/bar.txt). Para hacer eso, es probable que deba ejecutarfindpara generar la lista de nombres de archivo y derivar la ruta del archivo para comparar.diff, en lugar de usarbasenamefind, si la entradadiffcontiene un directorio, pasará y comparará los archivos dentro de ese directorio y es posible que deba ignorar algunos de estos archivos ... volver a la casilla 1.Tuve el mismo problema, así que creé un parche para
diff. El parche aún no se ha aceptado, pero puede crear su propia versióndiffcon el parche o instalarlo en Arch Linux con un paquete AUR .Aquí está el
diffparche.fuente
Para excluir el directorio
directory/sub-directory, yo usoSin embargo, aunque debería funcionar para una sola exclusión, no debería ser posible para una larga lista de ignorados como lo ha hecho.
fuente
fuente