Comparar dos directorios en la línea de comandos de Linux

Comparar dos directorios en la línea de comandos de Linux
Photo by Wesley Tingey / Unsplash

A menudo nos encontramos con la necesidad de comparar el contenido de dos directorios en busca de diferencias. Puede ser para verificar la sincronización de copias de seguridad, encontrar archivos faltantes o identificar cambios entre diferentes versiones de un proyecto. Afortunadamente, la línea de comandos de Linux nos brinda herramientas poderosas para llevar a cabo esta tarea. En este artículo, exploraremos cómo comparar dos directorios utilizando comandos en la terminal.

Usando el comando diff

El comando diff es una herramienta estándar en Linux que compara el contenido de dos archivos línea por línea. Sin embargo, también se puede utilizar para comparar el contenido de dos directorios. A continuación, se muestra cómo usar diff para comparar dos directorios:

diff -r directorio1 directorio2

Donde:

  • -r o --recursive: Hace que diff compare los directorios de manera recursiva, es decir, compara todos los archivos y subdirectorios dentro de los directorios especificados.
  • directorio1 y directorio2: Son los dos directorios que deseas comparar.

El comando diff mostrará las diferencias encontradas entre los dos directorios, indicando los archivos que son diferentes o faltan en uno de los directorios. Además, también se indicarán las diferencias línea por línea en los archivos que tengan diferencias.

Utilizando el comando rsync

El comando rsync es otra herramienta poderosa que se utiliza comúnmente para sincronizar y copiar archivos entre sistemas. También puede ser útil para comparar directorios y encontrar diferencias. A continuación, se muestra cómo usar rsync para comparar dos directorios:

rsync -n -r directorio1/ directorio2/

Donde:

  • -n o --dry-run: Realiza una simulación de la sincronización sin realizar cambios reales en los directorios.
  • -r o --recursive: Indica que rsync debe operar de manera recursiva en los subdirectorios.

El comando rsync mostrará las diferencias entre los dos directorios, incluyendo los archivos que son diferentes o faltan en uno de los directorios. Al utilizar la opción -n, rsync no realizará ninguna acción real, lo que es útil para inspeccionar las diferencias antes de tomar medidas.

Comparación detallada con diff y grep

Si deseas realizar una comparación más detallada y específica entre dos directorios, puedes combinar el comando diff con grep para filtrar resultados. Por ejemplo, si solo estás interesado en encontrar archivos que existen en directorio1 pero no en directorio2, puedes hacer lo siguiente:

diff -r directorio1 directorio2 | grep Only

El comando grep Only filtrará las líneas que contienen la palabra "Only", que generalmente se utiliza para indicar archivos que solo existen en uno de los directorios.


Comparar dos directorios en la línea de comandos de Linux es una tarea útil para verificar la integridad de copias de seguridad, identificar cambios en proyectos y más. Las herramientas como diff y rsync ofrecen opciones flexibles para realizar comparaciones de manera eficiente. Ya sea para propósitos de desarrollo o administración de sistemas, dominar estos comandos puede ahorrarte tiempo y ayudarte a mantener un control preciso sobre el contenido de tus directorios.

Recuerda que siempre es recomendable realizar pruebas en un entorno controlado antes de aplicar cambios en tus sistemas en producción.

Read more