Estoy tratando de encontrar diffcorreos electrónicos entre todos los archivos con los mismos nombres en dos copias de un directorio (por ejemplo, un trabajo y una copia de seguridad). Por ejemplo, puedo diffdos archivos del mismo nombre en ambos:
> diff d1/f.cpp d2/f.cpp
o puedo encontrar diferencias entre los directorios:
> diff d1 d2
pero, ¿cómo puedo encontrar diferencias solo entre los *.cpparchivos?
> diff d1/*.cpp d2/*.cpp
no parece funcionar (por razones obvias).
[Probablemente sea fácil de resolver con bucles, pero estoy tratando de encontrar una forma más elegante]

echo "${file##*/}";antes deldiffcomando, por lo que uno sabe qué archivos se están comparando realmente. Además, como se menciona en la respuesta de @ Rinzwind, este método no cubre el caso donde la lista de archivos no es exactamente la misma en ambos directorios.diff -qr {DIR1} {DIR2}hace todos los archivos en ambos directorios.qmuestra solo diferenciasrHace recursivo. Déjalo afuera si no necesitas esoNo puede indicarle
diffdirectamente que use comodines, pero puede agregar:para excluir archivos. Entonces, si solo desea que
*.cppel método más fácil sea crear un archivo de texto que enumere todos los archivos que no lo son*.cpp. Puede hacer esto con el siguiente comando:ls -I "*.cpp" > excluded_filesdonde el-I "*.cpp"argumento ignora todos los archivos .cpp. Tenga en cuenta que las comillas son necesarias.fuente
Algún tiempo después de hacer la pregunta, descubrí la
meldutilidad diff, y la estoy usando desde entonces. Este es un gran programa basado en GUI que hace que la comparación y fusión entre archivos y directorios sea una tarea muy fácil. Hace comparaciones de dos o tres vías.Específicamente, responde a mi pregunta original porque muestra una comparación codificada por colores de los contenidos del directorio y le permite comparar archivos específicos haciendo doble clic en el nombre del archivo.
Si uno necesita más que una comparación de tres vías, entonces
gvimdiff(según elvimeditor) también es una excelente opción que proporciona esta funcionalidad.fuente
Hay una solución ligera para eso:
diff dir1 dir2 | vim -R -en la cáscaraAgregará pliegues y una comparación lado a lado para los archivos modificados.
fuente