Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2006, 12h23   #1
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
Par défaut Affichage formaté

bonjour,
j'ai plusieurs chemins dans un fichier et je voudrais créer les répertoires de ces chemins
Code :
1
2
3
4
5
6
7
/sbin/lnstat
/usr/lib/tc/q_netem.so
/usr/share/doc/iproute2/examples/diffserv/regression-testing
/usr/share/doc/iproute2/examples/README.iproute2+tc
/usr/share/doc/iproute2/SNAPSHOT.tex
/usr/share/man/man3/libnetlink.3
/usr/share/man/man8/tc-pbfifo.8
en gros, en sortie je voudrais
Code :
1
2
3
4
5
6
7
/sbin
/usr/lib/tc
/usr/share/doc/iproute2/examples/diffserv
/usr/share/doc/iproute2/examples
/usr/share/doc/iproute2
/usr/share/man/man3
/usr/share/man/man8
pour créer ces répertoires. j'ai essayé de m'amuser avec cut (delim /) mais je n'arrive pas à connaitre le nombre de champs (variable). comment je pourrais faire cela en bash ?

Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h35   #2
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Une solution rapide, mais un tout petit peu tordue :

Code :
1
2
3
4
5
6
for fichier in $(cat fichier_des_chemins) ; do
  $repertoire=$(echo $fichier | rev | cut -f 2- -d '/' | rev)
  if [ ! -e $repertoire ] ; then
    mkdir $repertoire
  fi
done
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h38   #3
Membre confirmé
 
Avatar de vosaray
 
Inscription : mai 2004
Messages : 208
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 208
Points : 211
Points : 211
La solution pour traiter du texte s'appelle presque toujours perl

Code :
 perl -pi.save -e 's/^(.*)\/(.*)$/$1/g' ton_ficher
Fera certainement l'affaire.

Sinon t'apprendre tout ce qu'il faut savoir pour manipuler les regexp basiques.
vosaray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h39   #4
Membre confirmé
 
Avatar de vosaray
 
Inscription : mai 2004
Messages : 208
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 208
Points : 211
Points : 211
Erocents a ete plus rapide a clicker sur 'Envoyer la réponse'
vosaray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h42   #5
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Citation:
Envoyé par vosaray
La solution pour traiter du texte s'appelle presque toujours perl
Tout partisan de Perl que je sois, je conçois que l'on ne souhaite pas s'y investir pour une petite tâche système

Une autre solution, avec sed (très bien aussi pour traiter des flux de texte), à insérer dans le $( ) :
Code :
echo $repertoire | sed 's/\/[^/]$//'
Bon courage,
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 13h33   #6
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
merci à vous ça marche
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h43.


 
 
 
 
Partenaires

Hébergement Web