Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
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 24/11/2011, 17h34   #1
Nouveau Membre du Club
 
Inscription : mai 2009
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 105
Points : 31
Points : 31
Par défaut récupérer nom d'un dossier

Bonjour

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
#!/bin/sh
 
# je me place sur le dossier à parcourir :
cd "/mon/chemin/a/parcourir/dossierDeDepart/"
 
# j'affiche son contenu (uniquement les dossiers) :
liste=`ls`
echo "$liste"
# ce qui renvoie :
sousDossier
 
# ensuite je me place sur le dossier que je viens de trouver :
cd "./sousDossier"
 
# pour recuperer le contenu de celui ci :
liste2=`ls`
echo "$liste2"
# ce qui renvoie :
sousSousDossier
 
exit 0;
Jusque là pas de soushi.

Mais dans ce cas-ci :
Code :
1
2
3
4
5
6
7
8
9
 
# je me place sur le dossier à parcourir :
cd "/mon/chemin/a/parcourir/dossierDeDepart/"
 
# j'affiche son contenu (uniquement les dossiers) :
liste=`ls`
echo "$liste"
# ce qui renvoie PLUSIEURS résultats :
sousDossier sousDossier1 sousDossier2
Je cherche à récupérer le nom du dossier se trouvant au second niveau en dessous de "dossierDeDepart", soit "sousSousDossier"…

Pas de probleme quand il n'y a qu'un résultat dans le premier niveau, mais comment récupérer le dossier du seconde niveau pour chaque premier niveau trouvé ?

Pour illustrer voici un "schéma" :

Code :
1
2
3
4
5
6
7
8
 
/mon/chemin/a/parcourir/dossierDeDepart/        # NIVEAU 0
        |__ sousDossier                         # NIVEAU 1
                |__ sousSousDossierX            # NIVEAU 2
        |__ sousDossier1
                |__ sousSousDossierY
        |__ sousDossier2
                |__sousSousDossierZ

EDIT

J'ai essayé ça :

Code :
1
2
 
find "." -maxdepth 2 -type d
Et ça me renvoie :
Code :
1
2
3
4
5
6
 
.
./sousDossier
./sousDossier/sousSousDossierX
./sousDossier1
./sousDossier1/sousSousDossierY
Cordialement
Ginger
ginger4957 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 17h56   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
Bonjour,

il faut vraiment perdre cette habitude d'utiliser ls dans les scripts
Code :
1
2
3
4
#!/bin/sh
 
cd "/mon/chemin/a/parcourir/dossierDeDepart/"
for i in *; do if test -d "$i"; then for f in "$i"/*; do echo "$f"; done; break; fi; done
c'est un peu brut, on pourrait utiliser une fonction récursive intégrant un compteur au lieu de répéter des boucles for identiques



edit : et en ajoutant -mindepth ?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 09h38   #3
Nouveau Membre du Club
 
Inscription : mai 2009
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 105
Points : 31
Points : 31
C'est parfait avec mindepth

Code :
1
2
3
 
cd /mon/chemin/a/parcourir/dossierDeDepart/
find -mindepth 2 -maxdepth 2 -type d
Cordialement
Ginger
ginger4957 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 17h48.


 
 
 
 
Partenaires

Hébergement Web