Bonjour,
Dans ma tentative de créer un script de gestion de site web à base de pages statiques, je cherche une manière de trouver à quelle profondeur dans l'arborescence se trouve un fichier donné. L'intérêt est de transformer automatiquement des liens absolus en liens relatifs, et de supprimer le besoin d'avoir un serveur web qui tourne en local pour développer son site.
Un exemple : la racine de mon site est à /home/utilisateur/site/. En y lançant mon script, une page dans /home/utilisateur/site/ aurait une profondeur de 1, une dans /home/utilisateur/site/linux/ aurait une profondeur de 2, etc. Avec cette information, je peux facilement transformer un lien du type href="/dossier/page.html" en href="dossier/page.html" ou href="../dossier/page.html"
Vous connaissez une manière d'extraire cette information ? tree et find ne m'ont rien donné...
# Un peu de perl
Posté par Chris K. . Évalué à 2.
find ./ -name "*.*" | cut -d"/" -f2- | perl -e 'while(<>) { $l = $_; @arr = split(/\//); $l =~ s/\n//; $cnt = @arr; print $l.":".($cnt - 1)."\n" }'
Ou find recherche les fichiers,
cut -d"/" -fX- permet d'enlever la racine
et derrière un bout de perl qui compte le nombre de / et affiche le chemin relatif, deux points et le niveau
[^] # Re: Un peu de perl
Posté par gaaaaaAab . Évalué à 6.
tr -c '/' ' ' | tr -d ' ' | wc -c
[^] # Re: Un peu de perl
Posté par Chris K. . Évalué à 1.
J'avais complètement oublié l'existence de tr... honte sur moi ;)
[^] # Re: Un peu de perl
Posté par gaaaaaAab . Évalué à 2.
cela dit, je fais le malin, mais il m'a fallu un man tr, vu que je ne connaissais ni l'option -c, ni l'option -d ...
Du coup, merci pour la question MilkaJinka ;)
[^] # Re: Un peu de perl
Posté par Nerdiland de Fesseps . Évalué à 1.
Accessoirement, ça m'a permis de contourner un problème dans une boucle for (en tout cas sous Busybox) : les noms de fichier avec des espaces s'affichaient sur plusieurs lignes, ce qui est problématique pour les traiter :
for fichier in $(find . -type f)
do
echo "$fichier"
done
Ce code affichait "./un nom de fichier avec des espaces" comme ceci (alors qu'un find dans la console les affiche correctement) :
./un
nom
de
fichier
avec
des
espaces
[^] # Re: Un peu de perl
Posté par gaaaaaAab . Évalué à 2.
tr -d -c '/' | wc -c
parce que tr est bien conçu =)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.