unix - varios - Diferentes archivos presentes en dos directorios diferentes.
que significa en linux (7)
Aquí hay un script 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" )
Tengo dos directorios con la misma lista de archivos. Necesito comparar todos los archivos presentes en ambos directorios usando el comando diff
. ¿Hay 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 iterarlos?
Diff tiene una opción -r
que está destinada a hacer precisamente eso.
diff -r dir1 dir2
Prueba esto:
diff -rq /path/to/folder1 /path/to/folder2
Puedes usar el comando diff
para eso:
diff -bur folder1/ folder2/
Esto generará un diff recursivo que ignorará espacios, con un contexto unificado:
- b marca significa ignorar los espacios en blanco
- La bandera u significa un contexto unificado (3 líneas antes y después)
- bandera r significa recursivo
Si se trata de GNU diff, entonces debería poder apuntarlo a los dos directorios y usar la opción -r.
De lo contrario, intente usar
for i in $(/ls -d ./dir1/*); do diff ${i} dir2; done
NB Como señaló Dennis en la sección de comentarios, en realidad no es necesario realizar la sustitución de comandos en la ls. He estado haciendo esto durante tanto tiempo que estoy haciendo más o menos esto en piloto automático y sustituyendo el comando que necesito para obtener mi lista de archivos para comparación.
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.
Si solo está interesado en ver los archivos que difieren, puede utilizar:
diff -qr dir_one dir_two | sort
La opción "q" solo mostrará los archivos que difieren, pero no el contenido que difiere, y "ordenar" ordenará la salida alfabéticamente.
diff
no solo puede comparar dos archivos, sino que puede, mediante el uso de la opción -r
, recorrer árboles de directorios completos, verificando recursivamente las diferencias entre subdirectorios y archivos que ocurren en puntos comparables en cada árbol.
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...