Tengo dos directorios con la misma lista de archivos. Necesito comparar todos los archivos presentes en ambos directorios usando el comando diff
. ¿Existe una opción de línea de comando simple para hacerlo, o tengo que escribir un script de shell para obtener la lista de archivos y luego iterar a través de ellos?Archivos Diff presentes en dos directorios diferentes
Respuesta
Usted puede utilizar el comando diff
para ello:
diff -bur folder1/ folder2/
Esta es la salida de un diff recursivo que ignoran los espacios, con un marco unificado:
- b bandera significa ignorar espacios en blanco
- u bandera significa un contexto unificado (3 líneas antes y después)
- r bandera significa recursivo
diff
no sólo se puede comparar dos archivos, puede, utilizando la opción -r
, caminar árboles de directorios completos, comprobando de forma recursiva diferencias entre los subdirectorios y archivos que tienen lugar en momentos comparables en cada árbol.
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...
Dif tiene una opción -r
que está destinado a hacer precisamente eso.
diff -r dir1 dir2
Si se trata de GNU diff entonces sólo debe ser capaz de señalar que en los dos directorios y utilizar el -r opción.
De lo contrario, trate de usar
for i in $(\ls -d ./dir1/*); do diff ${i} dir2; done
N. B. Como señaló Dennis en la sección de comentarios, en realidad no es necesario hacer la sustitución del comando en el ls. He estado haciendo esto durante tanto tiempo que estoy haciendo esto en piloto automático y sustituyendo el comando necesito obtener mi lista de archivos para comparar.
También olvidé agregar que hago '\ ls' para deshabilitar temporalmente mi alias de ls a GNU ls para que pierda la información de formato de color de la lista devuelta por GNU ls.
No es necesario usar 'ls':' para i en./Dir1/* ' –
@Dennis, atajo funky. +1. Estoy tan acostumbrado a hacer la sustitución de comandos aunque es automático y solo uso el comando que necesito, p. a veces estoy usando find. Usar ls también me permite jugar con el directorio que lista más, p. tiempo de inversión basado en lugar de la secuencia predeterminada. –
Si sólo está interesado en ver los archivos que difieren, puede utilizar:
diff -qr dir_one dir_two | sort
opción "q" sólo mostrará los archivos que difieren, pero no el contenido que se diferencian, y "especie" se organizar la salida alfabéticamente.
¡Es genial! También funciona de manera eficiente, es decir, si todo un subdirectorio existe solo en uno de los directorios, deja de repetirse en él e informa solo el subdirectorio en sí (sin su contenido sucesor). ¡¡muy agradable!! – SomethingSomething
'-q' opción hombre !! te quiero. – Campa
Aquí hay una secuencia de comandos para mostrar las diferencias entre los archivos en dos carpetas. Funciona recursivamente Cambiar dir1 y dir2.
(search() { for i in $1/*; do [ -f "$i" ] && (diff "$1/${i##*/}" "$2/${i##*/}" || echo "files: $1/${i##*/} $2/${i##*/}"); [ -d "$i" ] && search "$1/${i##*/}" "$2/${i##*/}"; done }; search "dir1" "dir2")
Prueba esto:
diff -rq /path/to/folder1 /path/to/folder2
Esto duplica una respuesta existente y no agrega contenido nuevo. Por favor, no publique una respuesta a menos que realmente tenga algo nuevo para contribuir. –
- 1. Cómo comparar dos directorios usando diff sin tener en cuenta los archivos no existentes?
- 2. Wix Componente con archivos en directorios diferentes
- 3. Uso de diff y supresión de archivos completamente diferentes
- 4. eclipse, dos archivos diferentes con el mismo nombre en diferentes directorios
- 5. diff dos archivos grandes en Python
- 6. Comando Diff para comparar archivos en diferentes servidores: Unix
- 7. incluyendo archivos de encabezado de diferentes directorios?
- 8. Error de Makefile cuando se usa diff en archivos diferentes
- 9. Diff dos pestañas en Vim
- 10. Cómo comparar archivos con los mismos nombres en dos directorios diferentes usando un script de shell
- 11. Diff directorios con contenido en Netbeans
- 12. Registrando en dos archivos con configuraciones diferentes
- 13. Makefile con los archivos de origen en diferentes directorios
- 14. ¿Cómo comparar el tamaño de dos directorios?
- 15. Diff-command: no imprime líneas que son diferentes pero aún dice que los dos archivos son diferentes
- 16. ¿Diferentes arquitecturas en los mismos o diferentes árboles de directorios?
- 17. DUnit Comparar dos archivos de texto y mostrar Diff
- 18. Shellscript acción si dos archivos son diferentes
- 19. diff SVN en 2 repositorios diferentes
- 20. Diferentes directorios lib de JBoss
- 21. dado dos árboles de directorios ¿cómo encontrar qué archivos son los mismos?
- 22. git diff --word-diff con archivos en línea
- 23. oracle diff: cómo comparar dos tablas?
- 24. ¿Cómo fusionar dos ramas con diferentes jerarquías de directorios en git?
- 25. Mercurial: enumere archivos "hg diff"
- 26. Logback para registrar mensajes diferentes en dos archivos
- 27. comparar dos archivos en UNIX
- 28. Comparar dos archivos
- 29. Excluir archivos de git-diff
- 30. newline-ignooring diff/diff en múltiples líneas/reflow-ignooring diff
En Windows, ¿qué es lo que se utiliza para hacer que el comando diff? – onmyway133
Puede tener acceso al comando 'diff' al descargar [utilidades de GNU para Win32] (http://unxutils.sourceforge.net/). –
También he encontrado que --opción brillante es útil; obtienes una lista de archivos modificados y puedes procesarlos por separado – Dariusz