[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/