Comparar el contenido de dos directorios desde la línea de comandos

Anonim

Para comparar y listar los diferentes contenidos de dos directorios sin la salida extra que obtienes a través de comandos como diff, puedes usar el comando comm en su lugar. Para comenzar, inicie Terminal y escriba el siguiente comando, ajustando las rutas del directorio según corresponda:

comm -3 <(ls -1 carpeta1) <(ls -1 carpeta2)

La salida listada serán los archivos que son diferentes en cada carpeta, con los archivos exclusivos de la carpeta 1 alineados a la izquierda y los archivos exclusivos de la carpeta 2 alineados a la derecha.

Por ejemplo, para comparar el contenido de una carpeta denominada “Imágenes” y una carpeta denominada “Imágenes antiguas”, ambas almacenadas en el directorio de descargas del usuario, la sintaxis sería la siguiente:

comm -3 <(ls -1 ~/Descargas/Imágenes) <(ls -1 ~/Descargas/Imágenes antiguas)

La salida puede tener el siguiente aspecto:

$ comm -3 <(ls -1 ~/Descargas/Imágenes) <(ls -1 ~/Descargas/Imágenes antiguas) Carpeta-1-Archivo.PNG Carpeta -2-Copia de archivo.PNG foto 1 copia.PNG foto 3.PNG

Observe la sangría, que le muestra qué archivos son exclusivos de cada carpeta. En el ejemplo anterior, el archivo "foto 1 copy.PNG" y "foto 3.png" están alineados a la derecha, por lo tanto, son exclusivos del directorio OldPictures y Folder-1-File.PNG y Copia de carpeta-2-archivo.PNG son exclusivos de la carpeta Imágenes original.

Esto funciona muy bien en Mac OS X, pero es un comando genérico de Unix, por lo que también debería encontrarlo utilizable en Linux y otras variantes. Si se encuentra con algún problema de compatibilidad, o encuentra que este comando es innecesariamente complejo, intente usar diff para realizar la misma función.

Gran truco encontrado por @climagic en Twitter, ¡@osxdaily también está ahí!

Comparar el contenido de dos directorios desde la línea de comandos