programa gui diff de código abierto con tipo de archivo preestablecido para linux

Solía ​​​​usar Examdiff en Windows, lo cual es excelente porque muestra diferencias con respecto al tipo de archivo, como comparar JSOON u ordenar archivos INI antes de comparar.

En Linux encontré incomparable que hace todo lo que hace Examdiff, pero no tan fácil como Examdiff, además no es de código abierto. Así que necesito un programa GUI diff que:

  1. Tiene complementos (tipo de archivo preestablecido como clasificación de archivos)
  2. se compara la carpeta
  3. preferiblemente de código abierto

ACTUALIZACIÓN: Para explicar a qué me refiero con complementos daré dos ejemplos

Primero compararé los siguientes archivos:

  1. 1.json :

    {
      "name": "test app",
      "version": "0.1",
      "release_date": "2_2_2002",
      "kernel": "4.14",
      "username": "root",
      "password": "1234",
    }
    
  2. 2.json

    {"name": "test app","version": "0.1","release_date": "2_2_2002","kernel": "4.14","username": "root","password": "1234",}
    

Puede ver que estos archivos JSON son idénticos en contenido, excepto que el primero está correctamente sangrado (embellecido) mientras que el segundo está minimizado.

Entonces, si ejecuto cualquier herramienta de comparación en estos archivos, obtendría muchas diferencias.

Corriendo meld:

fusión en ejecución

mientras que si ejecuto Examdiff en estos archivos, detecta que estos son archivos JSON, por lo que usa un complemento y pasa estos archivos a una pequeña utilidad que embellece estos archivos antes de compararlos (todo esto se hace bajo el capó, por supuesto). Entonces, después de compararlo muestra que los archivos son idénticos

ingrese la descripción de la imagen aquí

El segundo ejemplo son los archivos INI:

  1. 1.ini

    [info]
    ShortName=EN
    
    [main]
    var1=Yes
    var2=No
    var3=Abort
    var4=Ignore
    var5=OK
    var6=Cancel
    var7=Retry
    var8=All
    var9=Help
    
  2. 2.ini

    [main]
    var1=Yes
    var6=Cancel
    
    
    var5=OK
    
    var9=Help
    
    var2=No
    var3=Abort
    
    var4=Ignore
    var7=Retry
    var8=All
    
    
    
    [info]
    ShortName=EN
    

En los archivos INI, el orden de los pares clave=valor no importa siempre que estén en las mismas secciones y las líneas vacías tampoco importan.

así que nuevamente correr meldmuestra muchas diferencias:

ingrese la descripción de la imagen aquí

mientras ejecuta Examdiff muestra que son idénticos (esta vez usa otro complemento que se basa en una utilidad llamada INIsorter)

ingrese la descripción de la imagen aquí

Respuestas (2)

No es realmente una respuesta, pero mientras tanto se pueden simular algunos filtros con bashsustitución de procesos y varias utilidades:

  1. Para archivos .json , usando mlry jq:

    meld  <(mlr --json cat 1.json | jq -M '.' ) \
          <(mlr --json cat 2.json | jq -M '.' )
    
  2. Para archivos .ini , usando crudini:

    meld <(crudini --get --format=lines 1.ini|sort) \
         <(crudini --get --format=lines 2.ini|sort)
    

Un defecto de tales métodos es que meldno muestra los nombres de archivo ( 1.json , etc. ), muestra los números de dispositivo de sustitución del proceso de los cuales se debe deducir el nombre de archivo correspondiente.

Supongo que eso jqsolo sería suficiente, ( es decir jq -M 1.json ), pero sin mlrél devuelve el error " error de análisis: se esperaba otro par clave-valor en la línea 8, columna 1 ".

fusionar

No conozco Examdiff y, por lo tanto, no entiendo lo que quiere decir con "tipo de archivo preestablecido como clasificación de archivos", pero Meld es una gran herramienta para comparar archivos y carpetas.

  1. No tiene complementos.
  2. ¿Se compara la carpeta?
  3. es de código abierto

fusionar captura de pantalla

Conozco Meld y no tiene la función que más necesito (complementos). Consulte mi pregunta actualizada para entender a qué me refiero.