# Extraire le contenu d'un coup d'un contexte

Voici comment extraire tout le contenu de plusieurs fichiers dans une sous-arborescence :

```bash
.venv) [nancmdzk@TOLX302130067 ~/workspace/techdata-ansible-collection] (docs/roles_documentation)$ tree techdata/monitoring/roles/kibana/
techdata/monitoring/roles/kibana/
├── defaults
│   └── main.yml
├── files
│   └── node.options
├── handlers
│   └── main.yml
├── meta
│   ├── argument_specs.yml
│   └── main.yml
├── README.md
├── tasks
│   ├── cleanup_old_facts.yml
│   ├── configure.yml
│   └── main.yml
├── templates
│   └── kibana.yml.j2
├── tests
│   └── main.yml
└── vars
    └── main.yml

8 directories, 12 files
```

La commande magique :

```bash
find techdata/monitoring/roles/kibana/ -type f -exec echo -e "\n=== {} ===" \; -exec cat {} \;
```

La même commande magique extraite dans un fichier :

```bash
find techdata/monitoring/roles/kibana/ -type f -exec echo -e "\n=== {} ===" \; -exec cat {} \; > kibana_full_export.txt
```

### Notice explicative des options de la commande :

- **`find techdata/monitoring/roles/kibana/`** : Outil de recherche et chemin du dossier de départ où fouiller.
- **`-type f`** : Restreint la recherche aux fichiers uniquement (*f* pour *file*). Cela permet d'ignorer les dossiers et d'éviter les erreurs de lecture.
- **`-exec ... \;`** : Indique à la commande `find` d'exécuter une action spécifique sur chaque élément trouvé. Le `\;` sert à marquer la fin de l'instruction à exécuter.
- **`echo -e "\n=== {} ==="`** : La première action exécutée. Elle affiche le nom du fichier comme un titre. 
    - **`-e`** : Active l'interprétation des caractères spéciaux, comme le `\n` qui crée un saut de ligne pour aérer la lecture.
    - **`{}`** : C'est la variable de `find`. Elle est remplacée dynamiquement par le chemin du fichier actuellement traité.
- **`-exec cat {} \;`** : La deuxième action exécutée immédiatement après. La commande `cat` lit et affiche l'intégralité du contenu du fichier (représenté par `{}`).
- **`> kibana_full_export.txt`** : Redirige la sortie standard (tout ce qui se serait affiché dans le terminal) pour l'écrire directement dans un fichier texte.