[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gulliver] tree


From David MENTRE <david dot mentre at wanadoo dot fr>
Subject Re: [gulliver] tree
Date Thu, 10 Jun 2004 19:15:11 +0200

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.
-- 
David Mentré <david dot mentre at wanadoo dot fr> -- http://gulliver.eu.org/