nono <jean dot claude dot noel at tele2 dot fr> writes:
find . | sed 's/[^/]*\//| /g;s/| *\([^| ]\)/+--- \1/'
Malin, j'aime beaucoup. :)
effectivement ça ne s'invente pas ;-)
Ben si :
"find . |" : lister tous les fichiers à partir du répertoire courant
(.) et l'envoyer sur l'entrée standard du processus
suivant
"sed" : exécuter le script suivant sur l'entrée standard
"s/[^/]*\//| /g" : remplacer (s) toutes les occurences de
"[^/]*\/" par "| "
"[^/]*\/" veut dire : toute séquence de caractère autre que slash
([^/]) et qui se termine par un slash (/)
Donc ce remplacement transforme chaque "xxxxxx/" en "| ".
"s/| *\([^| ]\)/+--- \1/" : remplacer (s) toutes les occurences de
"| *\([^| ]\)" par "+--- \1"
"| *\([^| ]\)" veut dire : un pipe (|) suivit de zero ou plus
espaces ( *), puis un caractère autre qu'un pipe
ou un espace ([^| ]). Mémoriser cette dernière
partie (\(....\)).
"+--- \1" veut dire : la chaine "+--- " puis la dernier machin
mémorisé (\1).
Donc cette partie remplace le dernier "| xxx" par "+--- xxx".
À vrai dire, je ne comprend pas trop la partie "\([^| ]\)". Elle semble
mémoriser plusieurs caractères alors que je pensais qu'elle mémorise un
seul caractère.
Amicalement,
d.