Cómo usar jq para encontrar todas las rutas a una determinada clave

En una estructura json anidada muy grande, estoy tratando de encontrar todas las rutas que terminan en una clave.

ex:

{
  "A": {
    "A1": {
      "foo": {
        "_": "_"
      }
    },
    "A2": {
      "_": "_"
    }
  },
  "B": {
    "B1": {}
  },
  "foo": {
    "_": "_"
  }
}

imprimiría algo en la línea de: ["A", "A1", "foo"], ["foo"]

Desafortunadamente, no sé en qué nivel de anidamiento aparecerán las claves, por lo que no he podido resolverlo con una simple selección. Me he acercado ajq '[paths] | .[] | select(contains(["foo"]))', pero la salida contiene todas las permutaciones de cualquier árbol que contiene foo. salida:["A", "A1", "foo"]["A", "A1", "foo", "_"]["foo"][ "foo", "_"]

Puntos de bonificación si pudiera mantener el formato de estructura de datos original pero simplemente filtrar todas las rutas que no contienen la clave (en este caso, los subárboles bajo "foo" no tendrían que estar ocultos).

Respuestas a la pregunta(1)

Su respuesta a la pregunta