j'ai besoin d'un petit coup de pousse pour une commande dans un script.
Je décris d'abord le contexte :
dans une arborescence (zim) qui ressemble à :
Code : Tout sélectionner
.../parent/
├── page.txt
└── page/
├── pasted_image.png
├── pasted_image001.png
├── pasted_image002.png
├── sous-page.txt
└── sous-page/
├── ...
└── ...
un document "page" dont :
* page.txt contient le contenu principal textuel
* ./page répertoire contenant :
* les images incluses dans "page"
* des sous-pages de "page" et les éventuels répertoires qui leurs seraient associés
Ce système que je trouve très pratique pour créer de la documentation illustrée,
a un inconvénient auquel je veux palier :
Toutes les images collées de toutes les pages sont nommées "pasted_image..." comme le montre l'échantillon (au dessus)
Mon but est :
Code : Tout sélectionner
├── page.txt
└── page/
├── page000.png
├── page001.png
├── page002.png
Comme je dois en traiter un wagon,
Je me suis lancé dans l'écriture d'un script devant :
1. Se placer à la racine de l'export
2. Rechercher les fichiers : pasted_image.png les renommer pasted_image000.png
3. Renommer dans toute l'arborescence : .../page/pasted_imagexxx.png en .../page/pagexxx.png
4. Remplacer dans tous les fichiers .txt la chaîne "pasted_image.png" par "pasted_image000.png"
5. Remplacer dans tous les fichiers .txt la chaîne "pasted_imagexxx.png" par "pagexxx.png"
J'en suis au 3.
et je bute pour récupérer "page"
c'est à dire le NOM du répertoire parent des images PNG
Voici ce que j'ai obtenu :
Code : Tout sélectionner
$ find . -name "pasted_image[0-9]*.png" -print
./pasted_image000.png
./0-Accueil/aaaa/pasted_image001.png
./0-Accueil/aaaa/pasted_image000.png
./0-Accueil/aaaa/pasted_image002.png
./0-Accueil/bbbb/pasted_image001.png
./0-Accueil/bbbb/cccc/pasted_image001.png
./0-Accueil/bbbb/cccc/pasted_image000.png
./0-Accueil/bbbb/cccc/pasted_image003.png
./0-Accueil/bbbb/cccc/pasted_image002.png
./0-Accueil/bbbb/pasted_image000.png
./0-Accueil/bbbb/pasted_image002.png
./0-Accueil/pasted_image001.png
./0-Accueil/pasted_image000.png
./0-Accueil/pasted_image002.png
Code : Tout sélectionner
$ find . -name "pasted_image[0-9]*.png" -exec dirname '{}' \;
.
./0-Accueil/aaaa
./0-Accueil/aaaa
./0-Accueil/aaaa
./0-Accueil/bbbb
./0-Accueil/bbbb/cccc
./0-Accueil/bbbb/cccc
./0-Accueil/bbbb/cccc
./0-Accueil/bbbb/cccc
./0-Accueil/bbbb
./0-Accueil/bbbb
./0-Accueil
./0-Accueil
./0-Accueil
Code : Tout sélectionner
$ find . -name "pasted_image[0-9]*.png" -exec basename $(dirname '{}') \;
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Comment obtenir :
Code : Tout sélectionner
.
aaaa
aaaa
aaaa
bbbb
cccc
cccc
cccc
cccc
bbbb
bbbb
0-Accueil
0-Accueil
0-Accueil
mais il n'y a pas la possibilité de:
* sélectionner le dernier champ
* compter les champs pour indiquer le dernier
Peut-être y-a-t-il une commande pour connaître la "profondeur" d'un chemin ?
Merci pour vos suggestions