Extraire le contenu d'un coup d'un contexte
Voici comment extraire tout le contenu de plusieurs fichiers dans une sous-arborescence :
.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 :
find techdata/monitoring/roles/kibana/ -type f -exec echo -e "\n=== {} ===" \; -exec cat {} \;
La même commande magique extraite dans un fichier :
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.